Вопрос проверяет базовое понимание агрегатных функций SQL и группировки данных.
GROUP BY используется для группировки строк по одному или нескольким столбцам.AVG вычисляет среднее значение по группе.
Все неагрегатные поля в SELECT должны быть указаны в GROUP BY.
Такой запрос часто применяется для аналитики и отчётов.
Это базовый, но очень важный SQL-паттерн.
GROUP BY группирует строки с одинаковыми значениями, а агрегатные функции применяются к каждой группе отдельно.
Предположим, есть таблица orders:
customer_id
amount
SELECT customer_id, AVG(amount) AS avg_amount
FROM orders
GROUP BY customer_id;
строки группируются по customer_id
для каждой группы считается AVG(amount)
результат содержит одну строку на группу
использование поля в SELECT без GROUP BY
ожидание, что AVG вернёт целое число
попытка фильтрации агрегатов через WHERE вместо HAVING
SELECT customer_id, AVG(amount)
FROM orders
GROUP BY customer_id
HAVING AVG(amount) > 100;
GROUP BY и AVG — основа агрегатных запросов. Они позволяют получать сводные данные напрямую из базы без дополнительной обработки в коде.