КАК рассчитать процентную разницу с лагом в Postgresql - PullRequest
0 голосов
/ 02 мая 2020

Я хочу рассчитать разницу в процентах для количества посетителей за последние 4 недели (неделя за неделей) для ресторана.

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

Вот мой код

SELECT

 to_char(visit_date, 'IW') AS weeks, SUM(reserve_visitors) AS total_visitors,
((SUM(reserve_visitors)/lag(SUM(reserve_visitors), 1) OVER (ORDER BY to_char(visit_date, 'IW'))) -1) * 100 AS percentage_change
FROM res_visitors
WHERE visit_date BETWEEN '02/01/2017' AND '28/05/2017'
GROUP BY weeks
ORDER BY weeks DESC
LIMIT 4

Вот что я получаю

enter image description here

Кто-нибудь знает, где может быть ошибка?

В идеале я бы хотел, чтобы процент, который показывает, сколько посетителей выросло / сократилось с одной недели до следующей

Спасибо в заранее и извините, если большинству из вас это может показаться тривиальным, я пытался понять это, но просто не могу найти это

1 Ответ

0 голосов
/ 03 мая 2020

Оказывается, что тип данных был неправильным, я делил целые числа, поэтому любое значение меньше 0,5 равно 0, а больше 0,5 равно 1.

Я умножил SUM (reserve_visitors) на 1,0, чтобы сделать его плавающим, и проблема решена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...