В каких секциях можно применить агрегатные функции, чтобы отфильтровать результат

«В каких секциях можно применить агрегатные функции, чтобы отфильтровать результат» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Агрегатные функции (SUM, COUNT, AVG, MAX, MIN и др.) можно использовать в секциях:

  1. SELECT - для вычисления агрегированных значений:
SELECT department, AVG(salary) 
FROM employees 
GROUP BY department
  1. HAVING - для фильтрации после группировки (в отличие от WHERE, который фильтрует до группировки):
SELECT department, COUNT(*) 
FROM employees 
GROUP BY department 
HAVING COUNT(*) > 5
  1. ORDER BY - для сортировки по агрегированным значениям:
SELECT department, SUM(salary) as total 
FROM employees 
GROUP BY department 
ORDER BY total DESC

Важно: агрегатные функции нельзя использовать напрямую в WHERE, так как они вычисляются после фильтрации строк. Для фильтрации по агрегатам используйте HAVING.