SQL: определить, произошло ли событие? - PullRequest
0 голосов
/ 16 ноября 2018

У нас есть такой столбец даты:

Date            Expected Output
1-Jan-18           1
2-Jan-18           0
3-Jan-18           0
4-Jan-18           0
5-Jan-18           0
19-Jan-18          1
20-Jan-18          0
21-Jan-18          0
25-Jan-18          1
29-Jan-18          0
1-Feb-18           0
4-Feb-18           1
13-Feb-18          1
18-Feb-18          1
21-Feb-18          0
3-Mar-18           1
12-Mar-18          1

Я пытаюсь написать запрос в импале / улье, пытался использовать опережающую / задерживающую оконную функцию, смог найти разницу между датами, но столкнулся с проблемой идентификации событий.

Логика: Событие будет происходить, очевидно, в дату начала, и если будет какая-либо дата, которая находится между датой начала и датой начала + 5, то это событие не будет считаться событием. Даты могут также повторяться, пытались предоставить некоторые данные образца с ожидаемым результатом. Где бы мы ни находились 1 в ожидаемом столбце, это событие. Кажется, моя логика не работает, пробовал с помощью операторов case и оконных функций опережений / отставаний.

1 Ответ

0 голосов
/ 16 ноября 2018

Ваши желаемые результаты, кажется, получены:

select t.*,
       (case when date >= lag(date) over (order by date) and
             date < date_add(lag(date) over (order by date), 5)
             then 0 else 1
        end) as flag
from t;
...