Первый экземпляр X в течение 7 дней в течение года - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь найти первый случай, когда клиент сталкивается с ошибкой в ​​течение 7 дней.Я планирую использовать это, чтобы увидеть, как клиент ведет себя в течение следующих дней, например, размещает ли он заказ или у него есть много времени до возвращения на сайт.

Итак, я ищу таблицу, которая содержит:

Customer, Date, ReceiptID
Jack, 07/05/2018 , 223A        

Это первый экземпляр за 7 дней.Затем он снова сталкивается с ошибкой 09/05/2018, которую мы не считаем, потому что она произошла в течение 7 дней после первой.

Затем он обнаруживает ошибку 18/08/2018, и я хочучтобы включить это в мои результаты.

Учитывая, что теоретически клиент мог столкнуться с более чем 30 ошибками в 7-дневном окне, есть ли возможность сделать это просто на сервере SQL?

1 Ответ

0 голосов
/ 09 февраля 2019

Вы можете использовать lag(), чтобы получить отчеты за 7+ дней из предыдущего отчета:

select b.*
from (select b.*,
             lag(date) over (partition by customer order by date) as prev_date
      from bugs b
     ) b
where prev_date is null or prev_date < dateadd(day, -7, date);

Обратите внимание, что если у вас есть последовательность, такая как 1-6-12-18-24тогда это будет считаться одним «7-дневным» периодом, поскольку в этих отчетах больше нет разрыва.

...