Используя конструкцию WINDOW, рассчитайте суммарную стоимость и количество заказов с накоплением от месяца к месяцу.
Выгрузите поля:
- идентификатор заказа;
- месяц оформления заказа, приведённый к типу date;
- сумма заказа;
- количество заказов с накоплением;
- суммарная стоимость заказов с накоплением.
SELECT order_id,
CAST(DATE_TRUNC('month', created_at) AS date) AS date_month,
total_amt,
COUNT(order_id) OVER (ORDER BY CAST(DATE_TRUNC('month', created_at) AS date)) AS order_count,
SUM(total_amt) OVER (ORDER BY CAST(DATE_TRUNC('month', created_at) AS date))
FROM tools_shop.orders
ORDER BY date_month
Результат
| order_id | date_month | total_amt | order_count | sum |
|---|---|---|---|---|
| 280567 | 2016-03-01 | 387.5 | 3 | 500.4 |
| 278543 | 2016-03-01 | 64.5 | 3 | 500.4 |
| 324983 | 2016-03-01 | 48.4 | 3 | 500.4 |
| 62705 | 2016-04-01 | 209 | 11 | 1069.37 |
| 349554 | 2016-04-01 | 13.32 | 11 | 1069.37 |
В отличие от временных таблиц, конструкцию WINDOW указывают внутри основного запроса — после оператора WHERE и до оператора ORDER BY.