vmamontov

islands_of_data

Jun 10th, 2024 (edited)
794
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 0.75 KB | None | 0 0
  1. -- решение для задачи - https://qna.habr.com/q/1354402
  2. WITH DATA AS (
  3.     -- считаем разницу между текущим и предыдущим периодом:
  4.     SELECT store_id, period, sales_volume, lag
  5.       , period - lag AS cnt
  6.     FROM promo
  7. )
  8. , temp AS (
  9.     -- задаём группы данных (острова данных):
  10.     SELECT store_id, period, sales_volume
  11.        , SUM(CASE WHEN cnt > 1 THEN 1 ELSE 0 END) OVER (partition BY store_id ORDER BY period) AS grp_id
  12.     FROM DATA
  13. )
  14.  
  15. SELECT store_id, period, sales_volume
  16.     , dense_rank() OVER(partition BY store_id ORDER BY grp_id) AS promo_id
  17.     , ROW_NUMBER() OVER(partition BY store_id, grp_id ORDER BY period) - 1 AS promo_cw
  18. FROM temp
Advertisement
Add Comment
Please, Sign In to add comment