Для подведения итогов по информации, содержащейся в базе данных, в SQL предусмотрены статистические (агрегатные) функции. Статистическая функция принимает в качестве аргумента какой-либо столбец данных целиком, а возвращает одно значение, которое определенным образом подытоживает этот столбец.
В SQL имеется пять статистических функций, которые позволяют получать различные виды итоговой информации:
- SUM() – для вычисления суммы всех значений столбца-аргумента
- AVG() – для вычисления среднего значения столбца
- MIN() – определяет минимальное значение столбца
- MAX() – определяет максимальное значение столбца
- COUNT() – подсчитывает число всех определенных значений столбца
- COUNT(*) – подсчитывает число строк таблицы.
Аргументом статистической функции может быть простое имя столбца или выражение. Приведем пример запроса со статистическими функциями:
Определить среднемесячную и среднегодовую зарплату сотрудников предприятия
select avg(salary) as per_month, avg(12*salary) as per_year
from staff;
В предыдущем примере в списке возвращаемых столбцов результирующего множества использовались псевдонимы столбцов, иначе значения в возвращаемой строке будут представлены под именами avg(salary) и avg(12*salary), т.е. псевдонимы здесь введены, можно сказать для “конкретизации” результирующих данных.
Особых замечаний заслуживает функция COUNT(). Тип данных столбца-аргумента этой функции может быть любым (не обязательно числовым, в отличие от других статистических функций), а возвращает она всегда целое число независимо от типа данных столбца. Например, следующий запрос подсчитывает количество работающих на предприятии менеджеров:
select count (sno)
from staff
where position = ‘менеджер’;
Следует заметить, что для функции COUNT() важны не конкретные значения ячеек, а важно количество, ячеек, удовлетворяющих заданному критерию. Поэтому на самом деле не важно, какой столбец указывать в качестве аргумента. Предыдущий запрос можно переписать и так:
select count (lname)
from staff
where position = ‘менеджер’;
В отличие от функции COUNT() статистическая функция COUNT(*) подсчитывает строки, а не значения в них. Функция COUNT() не учитывает NULL – значений в столбцах – аргументах, также как и любая другая статистическая функция.
В SQL существует ряд ограничений на применение статистических функций в инструкциях SELECT . Так в списке возвращаемых столбцов можно указывать любую статистическую функцию, она также может входить в выражение, в котором суммируются или вычитаются значения двух и более статистических функций, однако статистическая функция не может быть аргументом для другой такой функции, поскольку получающееся в таком случае выражение не имеет смысла. Кроме того, в списке возвращаемых столбцов нельзя одновременно указывать статистическую функцию и обычные имена столбцов, поскольку в этом также нет смысла.