Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Select count(id) FROM Twork




SELECT МIN(Объем) FROM TWork

SELECT МАХ(Объем) FROM Twork

WHERE (День LIKE 'п%'); (результат 10)

 

WHERE (Смена = 'Иванов'); (результат 2)

WHERE (Смена LIKE '%ов'); (результат 8)

Если параметром COUNT является звездочка ("любая запись"), то результате подсчитываются пустые записи (NULL) и дубликаты других записей.

 

SELECT COUNT(*) FROM Twork

WHERE (Смена LIKE '%ов'); (результат 32)

Наложение требования DISTINCT позволяет сузить расчетный диапазон. Именно совместное использование таких операторов позволяет увеличит надежность расчетов, так как в реальных БД обычно присутствуют дубликаты записей.

SELECT COUNT(DISTINCT День) FROM Twork; (результат 3)


 

Использование агрегатных функций позволяет производить и статистическую обработку расчетных показателей. В физических таблицах БД не принято хранить расчетные данные, так как их можно получить в результате запроса с использованием агрегатных функций.

ID Смена Объем День Цена Брак
           
           
           
           
           
           
           
           
           
           
           

TFIO TDay

ID ФИО
  Иванов
  Петров
  Сидоров
  Гришин
ID День
  понедельник
  среда
  пятница

До этого мы использовали агрегатные функции с аргументами в виде одиночных полей. Но следует знать о возможности использовать этих функций с аргументами, которые состоят из скалярных выражений, объединяющих включающих одно или более полей. Разумеется, оператор DISTINCT в таких выражениях неприменим. Например, подсчитаем на какую сумму в рублях было произведено деталей в среду.

SELECT SUM(Twork.Oбъем * Twork.Цeнa) FROM Twork, Tday WHERE (Tday.ID = Twork.День) AND (Tday.День = 'среда');

Найдем наибольшую долю брака при работе токаря Петрова.

SELECT MAX(Twork.Бpaк / (Twork.Oбъём + Twork.Брак)) FROM Twork, TFIO WHERE (TFIO.ID = Twork.Смена) AND (TFIO.ФИО = 'Петров');

 

Применение агрегатных функций значительно облегчает несложную статистическую обработку данных. Однако агрегатные функции работают внутри групп. Группа - это набор записей, у которых совпадает набор ключевых полей. Все остальные поля группы должны быть приведены к единому значению.

В простейших случаях группой выступает вся таблица, среди всей записей которой производится действие агрегирования.

SELECT МАХ(Брак) FROM Twork;

Если в операторе SELECT используется набор условий, то искомой группой записей является набор данных, полностью удовлетворяющий всем условиям директивы WHERE. Следовательно, группа записей, в которой происходит поиск максимального показателя отбраковки, содержит только записи с информацией о работе токаря Петрова.

SELECT МАХ(Брак) FROM Twork WHERE (Смена = 2);

Если в операторе SELECT используется агрегирование группы полученной в результате объединения данных нескольких таблиц, эта группа формируется с помощью явного указанного соответствия между первичным внешними ключами таблиц. В противном случае результирующей группой записей оказывается декартовое ("каждый с каждым") произведение записей всех самостоятельных групп, относящихся к различным таблицам.

SELECT MAX(Twork.Бpaк / (Twork.Объем + Twork.Брак)) FROM Twork, TFIO WHERE (TFIO.ID = Twork.Смена) AND (ТFIO.ФИО LIKE 'И%');

Конечно, этот запрос явно недоработан (декартовое произведение):

SELECT MAX(Twork.Бpaк / (Twork.Объем + Twork.Брак)) FROM Twork, TFIO WHERE (ТFIO.ФИО = LIKE 'И%');

На этом этапе освоения SQL мы можем формировать группы только с помощью наложения комбинации условий. В результате таких запросов получается единая группа записей, к которой применяется единственная функция агрегирования. Следовательно, вычислить минимальную месячную зарплату рабочего, прогулявшего за год максимальное количество смен невозможно. Для этого придется изучить другие возможности SQL.





Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 423; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.