В Teradata я пытаюсь получить промежуточную сумму вхождений в указанном диапазоне дат. Мне нужно выяснить, у каких клиентов было 5 или более претензий в течение 10 дней.
Пример данных: Claim_ID Claim_Dt Cust_num
15087 1/1/2020 123000
15099 2/3/2020 123000
18473 2/8/2020 123000
18476 2/8/2020 123000
18488 2/10/2020 123000
15080 1/1/2020 133000
15082 1/1/2020 133000
18555 2/13/2020 133000
18588 2/15/2020 133000
15601 2/16/2020 133000
15711 2/18/2020 133000
15799 2/21/2020 133000
15816 2/22/2020 133000
15926 2/27/2020 133000
15988 3/1/2020 133000
Ожидаемый результат:
Cust_num Claim_Count Min_date Max Date
133000 6 2/13/2020 2/22/2020
Вот код, который у меня есть до сих пор с использованием функции LAG:
select CLAIM_DT, CUST_NUM,
ROW_NUMBER() OVER (PARTITION BY CUST_NUM ORDER BY CUST_NUM, CLAIM_DT) as ROW_ID,
LAG(claim_dt,1) OVER(partition by cust_num order by claim_dt) as datediff,
claim_dt -datediff as DAYS_BETWEEN,
COUNT(claim_id) OVER(
PARTITION BY Cust_Num
ORDER BY claim_dt
RESET WHEN DAYS_BETWEEN > 10
ROWS BETWEEN 5 PRECEDING AND 5 FOLLOWING
) AS Claims_count, CLAIM_ID
from (
select CLAIM_ID, CLAIM_DT, CUST_NUM
from Claims_CUST_STILL_OPEN
) as dt
QUALIFY Claims_count >= 5
order by 2,1,3
Я могу получить простой счетчик между min (demand_dt) и max (demand_dt), но не могу понять, как получить счетчик запусков.
Я считаю, что мне нужна функция RESET, использующая строки UNBOUNDED PRECEDING, но я просто не могу заставить ее работать.
Любая помощь будет принята.