Агрегирование и групповые функции
Агрегирующие функции позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции над группой строк таблицы. Для задания в SELECT-запросе агрегирующих операций используются следующие ключевые слова:
• COUNT определяет количество строк или значений поля, вы бранных посредством запроса и не являющихся NULL-значе- ниями;
SUM вычисляет арифметическую сумму всех выбранных значений данного поля;
AVG вычисляет среднее значение для всех выбранных значе ний данного поля;
МАХ вычисляет наибольшее из всех выбранных значений данного поля;
MIN вычисляет наименьшее из всех выбранных значений данного поля.
В SELECT-запросе агрегирующие функции используются аналогично именам полей, при этом последние (имена полей) используются в качестве аргументов этих функций.
Функция AVG предназначена для подсчета среднего значения поля на множестве записей таблицы.
Например, для определения среднего значения поля MARK (оценки) по всем записям таблицы EXAM_MARKS можно использовать запрос с функцией AVG следующего вида:
SELKCT AVERAGE (MARK) PROM EXAM_MARKS;
Для подсчета общего количества строк в таблице следует использовать функцию COUNT со звездочкой.
SELECT COUNT(
FROM EXAM_MARKS;
Аргументы DISTINCT и ALL позволяют, соответственно, исключать и включать дубликаты обрабатываемых функцией COUNT значений, при этом необходимо учитывать, что при использовании опции ALL значения NULL все равно не войдут в число подсчитываемых значений.
SELECT COUNT(DISTINCT SUBJ_IDj FROM SUBJECT;
Предложение GROUP BYGROUP BY (группировать по) позволяет группировать записи в подмножества, определяемые значениями какого-либо поля, и применять агрегирующие функции уже не ко всем записям таблицы, а раздельно к каждой сформированной группе.
Предположим, требуется найти максимальное значение оценки, полученной каждым студентом. Запрос будет выглядеть следующим образом:
SELECT STUDENT_ID , MAX (MARKj FROM EXAM_MARKS GROUP BY STUDENT_ID;
Выбираемые из таблицы EXAM_MARKS записи группируют ся по значениям поля STUDENT ID, указанного в предложении
GROUP BY, и для каждой группы находится максимальное зна-
чение поля MARK. Предложение GROUP BY позволяет применять агрегирующие функции к каждой группе, определяемой общим значением поля (или полей), указанных в этом предложении. В приведенном запросе рассматриваются группы записей, сгруппированные по идентификаторам студентов.
В конструкции GROUP BY для группирования может быть использовано более одного столбца. Например:
SELECT STUDENT_ID, SUBJ_ID, MAX (MARKj FROM EXAM_MARKS GROUP BY STUDENT_ID, SUBJ_ID;
В этом случае строки вначале группируются по значениям первого столбца, а внутри этих групп — в подгруппы по значениям второго столбца. Таким образом, GROUP BY не только устанавливает столбцы, по которым осуществляется группирование, но и указывает порядок разбиения столбцов на группы.
Следует иметь в виду, что в предложении GROUP BY должны быть указаны все выбираемые столбцы, приведенные после ключевого слова SELECT, кроме столбцов, указанных в качестве аргумента в агрегирующей функции.
При необходимости часть сформированных с помощью GROUP BY групп может быть исключена с помощью предложения HAVING.
Предложение HAVING определяет критерий, по которому группы следует включать в выходные данные, по аналогии с предложением WHERE, которое осуществляет это для отдельных строк.
SELECT SUBJ_NAME, MAX (HOURj FROM SUBJECT GROUP BY SUBJ_NAME HAVING MAX (HOURj >= 72;
В условии, задаваемом предложением HAVING, указывают только поля или выражения, которые на выходе имеют единственное значение для каждой выводимой группы.
| Maya 3D графика в кино и телевидении Воздействие испытаний ядерного оружия на здоровье населения Объектно-ориентированный язык программирования Java Объектно-ориентированное программирование Delphi Библиотека визуальных компонентов VCL и ее базовые классы Кроссплатформенное программирование для Linux Элементы управления Win32 Элементы управления Windows XP Файлы и устройства ввода/вывода Что такое экспертная система? Объектно-ориентированное программирование Инструментальные средства разработки экспертных систем Программирование на языке CLIPS Критерии и количественные характеристики надежности Расчет характеристик надежности невостанавливаемых резервированных изделий Расчет надежности системы с постоянным резервированием Интегрирование тригонометрических функций ; |