Этот вопрос проверяет понимание агрегирующих функций и группировки данных в SQL, что необходимо для анализа и сводки информации в реляционных базах.
В 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 после 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, который применяется повсеместно: от формирования финансовых отчётов и анализа продаж до подсчёта статистики пользовательской активности в приложениях. Используйте её, когда вам нужно агрегировать числовые данные (суммы, количества, средние) внутри логических групп, определённых по одному или нескольким атрибутам.