Можно ли использовать агрегатные функции (SUM, COUNT) в SQL без GROUP BY?

«Можно ли использовать агрегатные функции (SUM, COUNT) в SQL без GROUP BY?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. Агрегатные функции (SUM, AVG, COUNT, MAX, MIN) без GROUP BY применяются ко всей выборке как к одной группе, возвращая единственную строку результата.

Примеры:

-- Считает общее количество строк в таблице
SELECT COUNT(*) FROM employees;

-- Вычисляет среднюю зарплату по всем сотрудникам
SELECT AVG(salary) FROM employees;

-- Находит максимальную зарплату в компании
SELECT MAX(salary) FROM employees;

Важное правило: Если в SELECT есть и агрегатные функции, и обычные столбцы, то все обычные столбцы должны быть указаны в GROUP BY. Иначе возникнет ошибка.

Сравнение:

-- ОШИБКА: column "department" must appear in GROUP BY clause
SELECT department, SUM(salary) FROM employees;

-- ПРАВИЛЬНО: группировка по отделам
SELECT department, SUM(salary) 
FROM employees 
GROUP BY department;

Таким образом, GROUP BY превращает агрегацию по всей таблице в агрегацию по группам.