Какие агрегатные функции в SQL ты знаешь?

«Какие агрегатные функции в SQL ты знаешь?» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Агрегатные функции в SQL выполняют вычисление над набором строк и возвращают одно значение. Основные из них:

  • COUNT() — подсчитывает количество строк (или не-NULL значений в столбце).
    SELECT COUNT(*) FROM orders; -- Все заказы
    SELECT COUNT(DISTINCT customer_id) FROM orders; -- Уникальные клиенты
  • SUM() — вычисляет сумму значений числового столбца.
    SELECT SUM(amount) FROM payments WHERE status = 'completed';
  • AVG() — вычисляет среднее арифметическое значений.
    SELECT AVG(rating) FROM product_reviews;
  • MAX() / MIN() — находят максимальное или минимальное значение.
    SELECT MAX(price), MIN(price) FROM products;
  • GROUP_CONCAT() (в MySQL) / STRING_AGG() (в PostgreSQL) — объединяет строковые значения из группы в одну строку.
    -- MySQL
    SELECT department_id, GROUP_CONCAT(employee_name) FROM employees GROUP BY department_id;

Эти функции почти всегда используются с предложением GROUP BY для агрегации данных по группам.

SELECT category_id, AVG(price), COUNT(*)
FROM products
GROUP BY category_id
HAVING AVG(price) > 100; -- HAVING фильтрует результаты агрегации