Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад

Как посчитать сумму значений по группе в SQL?

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

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

Для подсчёта суммы значений по группе в SQL используется оператор GROUP BY вместе с агрегирующей функцией SUM(). Сначала вы указываете столбец, по которому нужно сгруппировать строки, в предложении GROUP BY. Затем в SELECT вы перечисляете этот столбец группировки и применяете SUM() к числовому столбцу, значения которого нужно просуммировать. Например, чтобы посчитать общую выручку по каждому клиенту, вы сгруппируете по client_id и просуммируете столбец amount.

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

В SQL агрегирующие функции, такие как SUM(), COUNT(), AVG(), позволяют выполнять вычисления над наборами строк. Когда вам нужно получить не просто общую сумму по всей таблице, а сумму для каждой отдельной категории или группы, вы комбинируете функцию SUM() с предложением GROUP BY.

Основной синтаксис

Ключевая конструкция выглядит так:

SELECT column_for_grouping, SUM(column_to_sum)
FROM table_name
GROUP BY column_for_grouping;

Здесь column_for_grouping — это столбец, по уникальным значениям которого будут формироваться группы. Для каждой такой группы функция SUM() вычислит сумму всех значений в столбце column_to_sum.

Практический пример

Предположим, у нас есть таблица sales с данными о продажах:

CREATE TABLE sales (
    id INT,
    product_name VARCHAR(50),
    category VARCHAR(50),
    amount DECIMAL(10,2)
);

-- Вставим тестовые данные
INSERT INTO sales VALUES
(1, 'Laptop', 'Electronics', 1000.00),
(2, 'Mouse', 'Electronics', 25.50),
(3, 'Desk', 'Furniture', 300.00),
(4, 'Chair', 'Furniture', 150.00),
(5, 'Keyboard', 'Electronics', 75.00);

Чтобы посчитать общую сумму продаж по каждой категории товаров, выполним запрос:

SELECT category, SUM(amount) AS total_sales
FROM sales
GROUP BY category;

Результат будет содержать две строки: для 'Electronics' сумма 1100.50 (1000 + 25.50 + 75), а для 'Furniture' — 450.00 (300 + 150).

Дополнительные возможности

  • Фильтрация групп (HAVING): Если нужно отфильтровать результат по итоговой сумме (например, оставить только категории с суммой продаж больше 500), используйте HAVING после GROUP BY.
    SELECT category, SUM(amount) AS total_sales
    FROM sales
    GROUP BY category
    HAVING SUM(amount) > 500;
  • Группировка по нескольким столбцам: Вы можете группировать данные по комбинации нескольких столбцов, перечислив их в GROUP BY через запятую.
  • Сортировка результатов: Часто к результату добавляют ORDER BY total_sales DESC, чтобы увидеть категории с наибольшей выручкой в начале.

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • SQL

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

#SQL

#GROUP BY

#aggregate functions

#SUM

#data grouping

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