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

Для решения данной задачи в MySQL можно использовать функцию GROUP BY, которая позволяет агрегировать данные по заданному столбцу или группе столбцов. При этом можно применять агрегатные функции, такие как SUM, AVG, COUNT и т.д., для выполнения различных расчетов.

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

Приведу пример, допустим, у вас есть таблица "sales", содержащая информацию о продажах различных товаров в разные даты. У каждого товара есть категория, по которой вы хотите провести расчеты.

CREATE TABLE sales (
   id INT PRIMARY KEY,
   product_name VARCHAR(50),
   category VARCHAR(20),
   sale_date DATE,
   quantity INT,
   price DECIMAL(10,2)
);

INSERT INTO sales (id, product_name, category, sale_date, quantity, price)
VALUES (1, 'Товар 1', 'Категория A', '2022-01-01', 10, 100.00),
      (2, 'Товар 2', 'Категория A', '2022-01-02', 5, 200.00),
      (3, 'Товар 3', 'Категория B', '2022-01-01', 8, 150.00),
      (4, 'Товар 4', 'Категория B', '2022-01-03', 12, 120.00);

Допустим, вы хотите рассчитать общую сумму продаж и среднюю стоимость товаров в каждой категории. Тогда ваш SQL-запрос может выглядеть следующим образом:

SELECT category, SUM(quantity*price) AS total_sales, AVG(price) AS average_price
FROM sales
GROUP BY category;

В результате выполнения данного запроса вы получите таблицу с двумя столбцами: "category" и "total_sales"-"average_price", в которой каждая строка соответствует категории товаров и содержит общую сумму продаж и среднюю стоимость товаров по этой категории.

| category      | total_sales | average_price |
|---------------|-------------|---------------|
| Категория A   | 2500.00     | 150.00        |
| Категория B   | 2740.00     | 135.00        |

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