【发布时间】:2020-07-05 00:14:12
【问题描述】:
在 Teradata 中,我试图获取指定日期范围内的运行总数。我需要的是找出哪些客户在 10 天内提出了 5 次或更多次索赔。
样本数据: 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(claim_dt) 和 max(claim_dt) 之间的简单计数,但不知道如何获得运行计数。
我相信我需要一个使用 UNBOUNDED PRECEDING 行的 RESET 函数,但无法让它工作。
任何帮助将不胜感激。
【问题讨论】:
标签: date count teradata-sql-assistant