у меня таблица содержит 2 столбца; customer_id, login_date. Для каждого дня, если клиент вошел в систему, в таблице будет 1 запись для этого клиента.
Customer_id login_date
--------------------
1 31-Dec-2018
2 31-Dec-2018
3 31-Dec-2018
1 1-Jan-2019
2 1-Jan-2019
3 2-Jan-2019
2 2-Jan-2019
3 3-Jan-2019
3 4-Jan-2019
Мне нужно получить идентификаторы клиентов, которые входили в систему не менее 3 дней подряд . Ожидаемый результат такой, как показано ниже.
Customer_id
------
2
3
До сих пор я достиг этого с помощью запроса ниже.
select customer_id from (
select *, case when (lag(logindate,1) over (partition by customer_id order by logindate)) = dateadd(day, -1,logindate) then 1 else 0 end second_day ,
case when (lag(logindate,2) over (partition by customer_id order by logindate)) = dateadd(day, -2,logindate) then 1 else 0 end third_day
from login_history
) a
where a.second_day =1 and a.third_day =1;
Но если мне нужно получить клиентов с 5 последовательными входами в систему, я должен продолжать добавление лаговых столбцов. Есть ли лучший способ сделать это?