ЧТО ТАКОЕ АГРЕГАТНЫЕ ФУНКЦИИ?
Запросы
могут производить обобщённое групповое значение полей точно так же, как
и значение одного поля. Это делается с помощью агрегатных функций.
Агрегатные функции производят одиночное значение для всей группы
таблицы.
Вот список этих функций:
COUNT - выдаёт количество строк или не-NULL значений полей, которые выбрал запрос.
SUM - выдаёт арифметическую сумму всех выбранных значений данного поля.
AVG -выдаёт усреднение всех выбранных значений данного поля.
MAX - выдаёт наибольшее из всех выбранных значений данного поля.
MIN - выдаёт наименьшее из всех выбранных значений данного поля.
КАК ИСПОЛЬЗОВАТЬ АГРЕГАТНЫЕ ФУНКЦИИ?
Агрегатные
функции используются, подобно именам полей в предложении
SELECT-запроса, но с одним исключением: они берут имена полей как
аргументы.
Только числовые поля могут использоваться с SUM и AVG.
С функциями COUNT, MAX и MIN могут использоваться и числовые, и символьные поля.
При
использовании с символьными полями, MAX и MIN будут транслировать их в
эквивалент ASCII, который должен сообщать, что MIN будет означать
первое, а MAX последнее значение в алфавитном порядке.
ПРЕДЛОЖЕНИЕ GROUP BY
Предложение
GROUP BY позволяет вам определять подмножество значений в особом поле в
терминах другого поля и применять агрегатную функцию к подмножеству. Это
дает возможность объединять поля и агрегатные функции в едином
предложении SELECT.
Например, предположим, что вы хотите найти
наибольшую сумму продажи, полученную каждым продавцом. Вы можете сделать
раздельный запрос для каждого из них, выбрав MAX (amt) из таблицы, для
каждого значения поля snum. GROUP BY, однако, позволит вам поместить
всё в одну команду.
GROUP BY применяет агрегатные функции, независимо
от серий групп, которые определяются с помощью значения поля в целом. В
этом случае каждая группа состоит из всех строк с тем же самым
значением поля snum, и MAX функция применяется отдельно для каждой такой
группы. Это значение поля, к которому применяется GROUP BY, имеет, по
определению, только одно значение на группу вывода так же, как это
делает агрегатная функция. Результатом является совместимость, которая
позволяет агрегатам и полям объединяться таким образом.
Вы можете
также использовать GROUP BY с несколькими полями. Совершенствуя
вышеупомянутый пример, предположим, что вы хотите увидеть наибольшую
сумму продаж, получаемую каждым продавцом каждый день. Чтобы сделать
это, вы должны сгруппировать таблицу и применить функцию MAX к каждой
такой группе.