— это дата создания в таблице. Мне нужно построить график в диапазоне дат. Условно: возьми с позавчера по сегодня и покажи, сколько было пользователей.
Я через generate_series генерю даты, которые меня интересуют и по дате джойню таблицу с юзерами + груп бай дейт, все работает шикарно.
Но вот стала задача показывать не количество юзеров за каждый день, а динамику их роста. Т.е. если сегодня приехало 5 человек, то мне надо показать эти 5 + количество, которое было до этого момента, т.е. каждый новый день юзеров либо столько же, либо больше. Не может быть меньше, чем было вчера.
Сначала пробовал заюзать оконную функцию lag(), но она не совсем так работает, как я изначально думал. У кого какие мысли?
Можно попробовать рекурсивное cte С условием остановки при достижении даты
Тоже думал о рекурсии, но не будет ли это то же самое, что отдельный запрос на каждую дату?
Почти, в cte вы сможете использовать результаты прошлых вычислений в новых И запрос будет один, а не один на каждую дату Что удобно, для графаны например, с динамическим интервалом
Спасибо, попробую рекурсию
там сперва наполняется cte, а потом из него уже выборка происходит. cte да, может наполнятся построчно (один запрос на шаг рекурсии).
sum(arrived_count - left_count) over (order by date rows between unbounded preceding and current row)
Достаточно просто order by date, остальное по умолчанию, это называется нарастающий итог.
Обсуждают сегодня