Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад

Как написать SQL-запрос для агрегации данных с использованием GROUP BY?

Вопрос проверяет умение использовать GROUP BY для группировки и агрегации данных в SQL, что необходимо для получения сводной информации из таблиц.

Короткий ответ

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

Длинный ответ

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

Как работает GROUP BY

Когда вы выполняете запрос с GROUP BY, база данных сначала выбирает строки, соответствующие условиям WHERE, затем сортирует их по столбцам, указанным в GROUP BY, и, наконец, объединяет строки с одинаковыми значениями в эти группы. Для каждой группы можно вычислить агрегатные значения.

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

Предположим, у нас есть таблица orders с колонками order_id, customer_id, amount и order_date.

-- Подсчет количества заказов для каждого клиента
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id;

-- Сумма продаж по каждому клиенту
SELECT customer_id, SUM(amount) AS total_spent
FROM orders
GROUP BY customer_id;

-- Средний чек по дням
SELECT order_date, AVG(amount) AS avg_amount
FROM orders
GROUP BY order_date;

Важные нюансы

  • В SELECT с GROUP BY можно указывать только столбцы, по которым идет группировка, и агрегатные функции над другими столбцами.
  • Для фильтрации групп используется HAVING, а не WHERE (WHERE фильтрует строки до группировки).
  • Можно группировать по нескольким столбцам, например, GROUP BY customer_id, order_date.

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

Вывод: Используйте GROUP BY, когда вам нужно сгруппировать данные по определенным признакам и вычислить статистические показатели (количество, сумму, среднее) для каждой группы, что является основой для аналитических запросов в реляционных базах данных.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • SQL

Ключевые слова

#SQL

#GROUP BY

#aggregation

#database query

Подпишись на Java Developer в телеграм