Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 日期范围内的运行计数_Date_Count_Teradata Sql Assistant - Fatal编程技术网

Date 日期范围内的运行计数

Date 日期范围内的运行计数,date,count,teradata-sql-assistant,Date,Count,Teradata Sql Assistant,在Teradata中,我试图获取指定日期范围内发生的事件总数。我需要的是找出哪些客户在10天内提出了5项或5项以上的索赔 样本数据: 索赔ID索赔客户数量 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/

在Teradata中,我试图获取指定日期范围内发生的事件总数。我需要的是找出哪些客户在10天内提出了5项或5项以上的索赔

样本数据: 索赔ID索赔客户数量

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
以下是我使用滞后函数得到的代码:

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
我能够在minclaim_dt和maxclaim_dt之间得到一个简单的计数,但是我不知道如何得到一个运行计数

我相信我需要一个使用无界前几行的重置函数,但就是不能让它工作


任何帮助都将不胜感激。

如果您想了解哪些客户在任何10天内提出了5+索赔,这里有一种方法:

选择 客户数量, 计数索赔单 按t.Cust_Num划分 按日历日期订购 前4行和后5行之间的行-计算10天窗口中的索赔 作为一个重要的因素 来自sys_calendar.calendar c-种子结果集,范围为天 在c.calendar\u date=t.claim\u dt上左加入我的表t-加入客户数据 其中,c.日历\ u日期介于和之间 限定移动\u计数>=5-仅获取具有5+索赔的行
您可能无法在主查询中包含DISTINCT,因此要获得cust_num值的唯一列表,您可以从外部选择DISTINCT cust_num。。。然后将上面的查询放在…

中。如果您想找出哪些客户在任何10天内有5次以上的索赔,这里有一种方法:

选择 客户数量, 计数索赔单 按t.Cust_Num划分 按日历日期订购 前4行和后5行之间的行-计算10天窗口中的索赔 作为一个重要的因素 来自sys_calendar.calendar c-种子结果集,范围为天 在c.calendar\u date=t.claim\u dt上左加入我的表t-加入客户数据 其中,c.日历\ u日期介于和之间 限定移动\u计数>=5-仅获取具有5+索赔的行
您可能无法在主查询中包含DISTINCT,因此要获得cust_num值的唯一列表,您可以从外部选择DISTINCT cust_num。。。然后将上面的查询放在…

中,首先展开每个索赔行,覆盖有效的10天窗口,创建10个行副本,然后汇总并过滤结果。外部分组BY仅给出一行,每个最小值的最大计数/最新最大值

select cust_id, max(claim_ct) as claim_ct, min_dt, max(max_dt) as max_ct
FROM (
  select cust_id, count(*) as claim_ct, min(claim_dt) as min_dt, max(claim_dt) as max_dt
  FROM (
     select claim_id, claim_dt, cust_id, begin(window_pd) as window_dt
     from claims
     expand on period(claim_dt, claim_dt+10) as window_pd 
       ) expand_effective_date_range
  group by cust_id, window_dt /* running total by customer & day */ 
  having window_dt = max_dt /* only keep rows with matching claim dates */
  and Claim_ct >=5 /* and then only if count is at least 5 */
     ) summarize_and_filter
group by cust_id, min_dt; 

首先展开每个索赔行以覆盖有效的10天窗口,创建该行的10个副本,然后汇总和筛选结果。外部分组BY仅给出一行,每个最小值的最大计数/最新最大值

select cust_id, max(claim_ct) as claim_ct, min_dt, max(max_dt) as max_ct
FROM (
  select cust_id, count(*) as claim_ct, min(claim_dt) as min_dt, max(claim_dt) as max_dt
  FROM (
     select claim_id, claim_dt, cust_id, begin(window_pd) as window_dt
     from claims
     expand on period(claim_dt, claim_dt+10) as window_pd 
       ) expand_effective_date_range
  group by cust_id, window_dt /* running total by customer & day */ 
  having window_dt = max_dt /* only keep rows with matching claim dates */
  and Claim_ct >=5 /* and then only if count is at least 5 */
     ) summarize_and_filter
group by cust_id, min_dt; 

这似乎并没有得到我所需要的东西,尽管我很感激。我需要一种方法来重置日期范围的计数。虽然这似乎给了我一个索赔计数,但它并没有给我从每个新日期重置的能力。我认为问题在于10天后需要重置功能。你说的重置日期范围的计数是什么意思?请在您的原始帖子中添加一些示例预期输出。我添加了预期结果。我也在使用滞后函数计算一个可能的计数,如果我让它工作,我将与大家分享。这似乎并没有得到我所需要的,尽管我很感激。我需要一种方法来重置日期范围的计数。虽然这似乎给了我一个索赔计数,但它并没有给我从每个新日期重置的能力。我认为问题在于10天后需要重置功能。你说的重置日期范围的计数是什么意思?请在您的原始帖子中添加一些示例预期输出。我添加了预期结果。我也在使用滞后函数计算一个可能的计数,如果我让它起作用,我将与大家分享。这很好。我认为我在使用滞后功能和重置时偏离了轨道。这太棒了。我认为我在使用滞后功能和重置时偏离了轨道。