На сколько процентов ежемесячно менялось количество заказов в компании 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;
Результат
 
 
Задание выполнено верно