Ответ
Агрегатные функции (такие как 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.