我有一个帮助台系统的数据集我正在构建报告,我需要能够计算每个客户的最大联系尝试次数。客户可以在任何给定时间打开多张票。
这是我目前使用的代码
select *
from reporting
order by Job_id, seq_id, REason
SEQ_ID job_id EVENT_Name reason account_number 1 70449 Created 10341307 2 70449 Available 10341307 3 70449 Allocated 10341307 4 70449 Rescheduled Failed Contact - Attempt 1 10341307
以上是示例输出。
失败的联系人尝试最多可以发生三次,每次尝试次数都会增加。因此,如果客户有一个失败的联系人 - 尝试3我只想计算那次尝试,没有任何进展。
我怎么能这样做?
答案 0 :(得分:0)
如果您只想保留最近的“失败联系人”(如果有的话),那么您可以使用row_number()
:
select r.*
from (select r.*,
row_number() over (partition by (case when reason like 'Failed Contact%' then 1 else 2 end)
order by seq_id desc
) as seqnum
from reporting r
) r
where seqnum = 1 or reason not like 'Failed Contact%'
order by Job_id, seq_id, Reason;