Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- решение для задачи - https://qna.habr.com/q/1354402
- WITH DATA AS (
- -- считаем разницу между текущим и предыдущим периодом:
- SELECT store_id, period, sales_volume, lag
- , period - lag AS cnt
- FROM promo
- )
- , temp AS (
- -- задаём группы данных (острова данных):
- SELECT store_id, period, sales_volume
- , SUM(CASE WHEN cnt > 1 THEN 1 ELSE 0 END) OVER (partition BY store_id ORDER BY period) AS grp_id
- FROM DATA
- )
- SELECT store_id, period, sales_volume
- , dense_rank() OVER(partition BY store_id ORDER BY grp_id) AS promo_id
- , ROW_NUMBER() OVER(partition BY store_id, grp_id ORDER BY period) - 1 AS promo_cw
- FROM temp
Advertisement
Add Comment
Please, Sign In to add comment