На сколько процентов ежемесячно менялось количество заказов в компании Northwind с 1 апреля по 1 декабря 1997 года? Отобразите таблицу со следующими полями:
- номер месяца;
- количество заказов в месяц;
- процент, который показывает, насколько изменилось количество заказов в текущем месяце по сравнению с предыдущим.
Если заказов стало меньше, значение процента должно быть отрицательным, если больше — положительным. Округлите значение процента до двух знаков после запятой. Отсортируйте таблицу по возрастанию значения месяца.
Напомним, что при делении одного целого числа на другое в PostgreSQL в результате получится целое число, округлённое до ближайшего целого вниз.
Чтобы этого избежать, переведите делимое в тип numeric.
SELECT EXTRACT(MONTH FROM (order_date)) AS creation_month,
COUNT(order_id) AS orders_count,
--LAG(COUNT(order_id), 1, NULL) OVER (ORDER BY EXTRACT(MONTH FROM (order_date)))::numeric,
ROUND(((COUNT(order_id)::numeric) * 100 / LAG(COUNT(order_id), 1, NULL) OVER (ORDER BY EXTRACT(MONTH FROM (order_date)))::numeric)-100, 2) AS percentage
FROM northwind.orders
WHERE order_date BETWEEN '1997-04-01' AND '1997-12-01'
GROUP BY creation_month
ORDER BY creation_month;