Ответ
Агрегатные функции (такие как COUNT
, SUM
, AVG
, MAX
, MIN
) используются для выполнения вычислений над набором строк и возвращения одного итогового значения. Их можно применять в следующих секциях SQL-запроса:
-
SELECT
- Цель: Для вычисления итоговых значений по столбцам. Обычно используется вместе с
GROUP BY
.-- Подсчет средней зарплаты в каждом департаменте SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department;
- Цель: Для вычисления итоговых значений по столбцам. Обычно используется вместе с
-
HAVING
- Цель: Для фильтрации групп строк после их агрегации.
HAVING
работает с результатами агрегатных функций, в отличие отWHERE
, который фильтрует строки до агрегации.-- Вывод только тех департаментов, где количество сотрудников больше 10 SELECT department, COUNT(id) as employee_count FROM employees GROUP BY department HAVING COUNT(id) > 10;
- Цель: Для фильтрации групп строк после их агрегации.
-
ORDER BY
- Цель: Для сортировки результирующего набора данных на основе значения, вычисленного агрегатной функцией.
-- Сортировка департаментов по убыванию суммарной зарплаты SELECT department, SUM(salary) as total_salary FROM employees GROUP BY department ORDER BY total_salary DESC;
- Цель: Для сортировки результирующего набора данных на основе значения, вычисленного агрегатной функцией.
Важное замечание: Агрегатные функции нельзя использовать в секции WHERE
, так как WHERE
фильтрует строки до того, как происходит группировка и вычисление агрегатов. Для фильтрации по результатам агрегации всегда используется HAVING
.