Агрегирующие функции
Для выполнения агрегирующих операций используются следующие функции:
-
COUNT определяет количество строк или значений поля, выбранных посредством запроса и не являющихся NULL-значениями;
- SUM вычисляет сумму всех выбранных значений данного поля;
- AVG вычисляет среднее значение для всех выбранных значений данного поля;
- МАХ вычисляет наибольшее из всех выбранных значений данного поля;
- MIN вычисляет наименьшее из всех выбранных значений данного поля.
В качестве аргументов агрегирующих функций в большинстве случаев используются названия полей таблицы, но также допускаются константы, функции и любые их комбинации с арифметическими операторами.
Общая форма агрегирующей функции имеет следующий вид:
aggregate_function (<expr>)
SQL:
SELECT AVG(price) FROM tbl_service
В результате выполнения запроса получим одно значение:
avg(price) |
110.83 |
С помощью следующего оператора можно найти среднюю стоимость всех услуг в случае удвоения их цены:
SQL:SELECT AVG(price*2) FROM tbl_service
Если в столбце, к которому применяется агрегирующая функция, имеются нулевые (NULL) значения, то они просто игнорируются.
Исключением является функция COUNT(*), которая всегда подсчитывает общее количество строк, независимо от наличия в них нулевых значений.
SQL:
SELECT COUNT(retire_date)
FROM tbl_contract
Результат:
COUNT(retire_date) |
66 |
Поскольку поле retire_date содержит дату расторжения договора и значение NULL в случае, если договор не был расторгнут, функция COUNT не учитывает строки, содержащие значения NULL в поле retire_date.
SQL:
SELECT
COUNT(*) FROM tbl_contract
В результате выполнения данного запроса будет получено количество записей в таблице tbl_contract:
COUNT(*) |
315 |
Если условиям запроса не удовлетворяет ни одна строка, агрегирующие функции возвращают значение NULL. Исключение составляет функции COUNT, которая возвращает нуль.
Подсчитать количество клиентов мужского пола:
SQL:
SELECT COUNT(*) FROM tbl_clients WHERE sex='m'