Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*create table purchase (bonuscard int, date_purchase date)
- insert into purchase values
- (2133, '2020-01-12'),
- (4791, '2020-03-02'),
- (1589, '2020-07-10'),
- (4455, '2020-12-22'),
- (6037, '2020-01-31'),
- (2133, '2020-03-18'),
- (1589, '2020-03-12'),
- (4791, '2020-05-02'),
- (4455, '2021-01-13'),
- (2133, '2020-01-03'),
- (6037, '2020-02-19'),
- (2133, '2020-01-10'),
- (1589, '2020-04-15'),
- (6037, '2020-08-07')*/
- -- определяем дату следующей покупки
- WITH t1 AS (
- SELECT bonuscard, date_purchase, LEAD(date_purchase, 1, NULL) OVER (PARTITION BY bonuscard ORDER BY date_purchase) date_next
- FROM purchase
- ORDER BY bonuscard
- ),
- -- находим разницу в месяцах между текущей покупкой и предыдущей
- t2 AS (
- SELECT bonuscard, date_purchase, date_next, date_part('month', date_next) - date_part('month', date_purchase) diff
- FROM t1
- )
- -- оставляем diff = 1 (diff = 0 - текущая и предыдущая покупка в одном месяце,
- -- diff > 1 - между покупками прошло больше месяца, то есть не выполняется условие "2 месяца подряд")
- SELECT bonuscard
- FROM t2
- WHERE diff = 1
Advertisement
Add Comment
Please, Sign In to add comment