Напиши SQL-запрос для вычисления суммарного дохода магазина по дням недели за последний месяц.
Для вычисления суммарного дохода магазина по дням недели за последний месяц нужно сгруппировать данные по номеру дня недели и просуммировать выручку. Ниже приведены примеры для разных СУБД.
**PostgreSQL:**
sql
SELECT
TO_CHAR(order_date, ‘Day’) AS day_of_week,
EXTRACT(DOW FROM order_date) AS day_number,
SUM(amount) AS total_revenue
FROM orders
WHERE order_date >= DATE_TRUNC(‘month’, CURRENT_DATE — INTERVAL ‘1 month’)
AND order_date = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), ‘%Y-%m-01’)
AND order_date = date(‘now’, ‘start of month’, ‘-1 month’)
AND order_date < date('now', 'start of month')
GROUP BY day_number
ORDER BY day_number;
**Пояснения к запросу:**
— `orders` — таблица с заказами; замените на своё имя таблицы.
— `order_date` — столбец с датой заказа (тип DATE или TIMESTAMP).
— `amount` — столбец с суммой заказа.
— Условие `WHERE` ограничивает выборку строго предыдущим календарным месяцем.
— `GROUP BY` группирует строки по дню недели.
— `ORDER BY day_number` выводит дни в правильном порядке (0 = воскресенье в большинстве СУБД).
**Строка для CSV:**
day_of_week,day_number,total_revenue
Пример данных в CSV:
Monday,1,45230.00
Tuesday,2,38910.50
Wednesday,3,51200.75
Thursday,4,47800.00
Friday,5,62100.25
Saturday,6,78450.00
Sunday,0,29300.50
Чтобы экспортировать результат сразу в CSV из PostgreSQL, используйте команду:
sql
COPY (/* ваш SELECT-запрос */) TO '/path/to/output.csv' WITH CSV HEADER;
В MySQL можно добавить `INTO OUTFILE '/path/output.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n'` в конец SELECT-запроса.
