我需要为报告生成数据。在此报告中,我正在监视客户端丢弃的唯一呼叫的数量,但是,如果客户端每分钟呼叫一次并断开连接,则需要将其视为1个呼叫。我们已决定阐明在首次通话后5分钟内发生的所有通话。
我的数据看起来像
CREATE_DATE_TIME|Number
2019-06-03 09:10:56.0|100037729
2019-06-03 09:10:57.0|100037729
2019-06-03 09:10:58.0|100134657
2019-06-03 09:10:59.0|101401435
2019-06-03 09:11:00.0|101401435
2019-06-03 09:11:01.0|104925349
我想要
2019-06-03 09:10:56.0 100037729
2019-06-03 09:10:58.0 100134657
2019-06-03 09:10:59.0 101401435
2019-06-03 09:11:01.0 104925349
因此,我尝试使用Datediff来消除其他重复项,只是为了获得更多重复项。
SELECT Distinct [CREATE_DATE_TIME]
,right(Left([SUBJECT],16),11) as [Number]
--,datediff(mi,[CREATE_DATE_TIME],lag ([CREATE_DATE_TIME],1) over (order by [CREATE_DATE_TIME])) as timeprev
--,CAse when datediff(mi,[CREATE_DATE_TIME],lag ([CREATE_DATE_TIME],1) over (order by [CREATE_DATE_TIME]))>5 then 'Unique' else 'Duplicate' end as [Time_dup_check]
From [server1].[Database].[Schema].[call_list]
Where datediff(mi,[CREATE_DATE_TIME],lag ([CREATE_DATE_TIME],1) over (order by [CREATE_DATE_TIME])) > 5
这是最终结果:(
CREATE_DATE_TIME|Number
2019-06-03 09:10|100037729
2019-06-03 09:10|100037729
2019-06-11 08:02|100134657
2019-06-11 08:02|100134657
2019-06-13 12:58|101401435
2019-06-13 12:58|101401435
2019-06-13 12:59|101401435
2019-06-13 12:59|101401435
2019-06-18 14:35|104925349
2019-06-18 14:35|104925349
有人可以帮我过滤吗?
答案 0 :(得分:0)
您可以使用lag()
:
select cl.*
from (select cl.*,
lag(create_date_time) over (partition by number order by create_date_time) as prev_created_date_time
from [server1].[Database].[Schema].[call_list] cl
) cl
where prev_created_date_time is null or
prev_created_date_time < dateadd(minute, -5, create_date_time)