Sobes.tech
Назад к вопросам
Junior — Middle
60

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

Компании, где спрашивали
Страна Девелопмент

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Агрегация в SQL — это способ сворачивать множество строк в один результат по группе данных. Обычно для этого используют GROUP BY вместе с агрегатными функциями, такими как COUNT, SUM, AVG, MIN, MAX. Важно показать, что понимается разница между расчетом по всей выборке и по группам.

Определение:

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

Чаще всего агрегация выполняется с помощью:

  • COUNT() — считает строки или ненулевые значения
  • SUM() — суммирует значения
  • AVG() — вычисляет среднее
  • MIN() — находит минимальное значение
  • MAX() — находит максимальное значение

Если нужно получить агрегаты не по всей таблице, а по категориям, используется GROUP BY.

Пример использования:

SELECT department_id,
       COUNT(*) AS employee_count,
       AVG(salary) AS avg_salary,
       MAX(salary) AS max_salary
FROM employees
GROUP BY department_id;

Этот запрос показывает:

  • сколько сотрудников в каждом отделе,
  • среднюю зарплату по отделу,
  • максимальную зарплату по отделу.

Еще пример без группировки — агрегат по всей таблице:

SELECT COUNT(*) AS total_employees,
       SUM(salary) AS total_salary,
       MIN(salary) AS min_salary,
       MAX(salary) AS max_salary
FROM employees;

Пояснение кода:

В первом запросе:

  1. FROM employees — берутся все строки из таблицы сотрудников.
  2. GROUP BY department_id — строки объединяются по отделам.
  3. COUNT(*) считает количество сотрудников в каждом отделе.
  4. AVG(salary) вычисляет среднюю зарплату внутри каждой группы.
  5. MAX(salary) находит максимальную зарплату в группе.
  6. Результат содержит по одной строке на каждый department_id.

Во втором запросе:

  1. Группировка не указана, поэтому агрегаты считаются по всей таблице.
  2. COUNT(*) возвращает общее число сотрудников.
  3. SUM(salary) возвращает общую сумму зарплат.
  4. MIN(salary) и MAX(salary) дают минимальную и максимальную зарплату среди всех записей.

Ключевые моменты:

  • Агрегация нужна для получения сводных показателей из набора строк.
  • GROUP BY делит данные на группы, а агрегатные функции считаются внутри каждой группы.
  • WHERE фильтрует строки до агрегации, а HAVING — после нее.
  • COUNT(*) считает строки, а COUNT(column) — только ненулевые значения в столбце.
  • Для аналитических отчетов агрегация — один из базовых инструментов SQL.