Какие агрегатные функции SQL вы использовали и для чего?

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

Ответ

Да, агрегатные функции — это стандартный инструмент SQL для выполнения вычислений над набором строк и возврата единственного значения. Основные функции и их назначение:

  • COUNT() — подсчитывает количество строк (часто COUNT(*)) или не-NULL значений в столбце.
  • SUM() — вычисляет сумму значений в числовом столбце.
  • AVG() — вычисляет среднее арифметическое значений в числовом столбце.
  • MAX() / MIN() — находят максимальное или минимальное значение в столбце.

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

Пример запроса с группировкой и фильтрацией:

-- Найти среднюю зарплату по отделам, где она превышает 50000
SELECT 
    department_id,
    department_name,
    AVG(salary) AS average_salary,
    COUNT(*) AS employee_count
FROM employees
WHERE active = TRUE -- Предварительная фильтрация строк
GROUP BY department_id, department_name
HAVING AVG(salary) > 50000 -- Фильтрация после агрегации
ORDER BY average_salary DESC;

На что обращать внимание при тестировании:

  • Корректность обработки NULL-значений (например, AVG() игнорирует NULL).
  • Правильность группировки по нескольким полям.
  • Производительность агрегаций на больших объемах данных.
  • Особенности реализации функций в разных СУБД (MySQL, PostgreSQL, SQLite).