Alexander_89

BB_2

Jun 21st, 2023
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 0.83 KB | None | 0 0
  1. /*create table segment (date date, ClientID varchar(6),SegmentID int)
  2. insert into segment values  
  3. ('2018-01-31' ,'A11111', 2),
  4. ('2018-02-28' ,'A11111', 2),
  5. ('2018-03-31' ,'A11111', 1),
  6. ('2018-04-30' ,'A11111', 1),
  7. ('2017-11-30' ,'B22222', 1),
  8. ('2017-10-31' ,'B22222', 1),
  9. ('2017-09-30' ,'B22222', 3),
  10. ('2017-09-30' ,'C33333', 1),
  11. ('2017-10-31' ,'C33333', 1) */
  12.  
  13. -- с помощью подзапроса определяем дату окончания сегмента
  14. WITH t1 AS (
  15.     SELECT date, ClientID, SegmentID, LEAD(date, 1, NULL) OVER(PARTITION BY ClientID, SegmentID ORDER BY date) date1
  16.     FROM segment
  17.     )
  18. SELECT ClientID, SegmentID, date1-date
  19. FROM t1
  20. -- оставляем только те строки, в которых период действия уже закончился
  21. WHERE date1-date IS NOT NULL
  22.  
Advertisement
Add Comment
Please, Sign In to add comment