想向各位请教,例如图中黄色的那两行,agent Nancy,她admin work的时间是8:07,到转回avaiable的时间是8:10,我要计算这个时间差(3分钟)。同理,第16行和17行,这次是另一个agent stacey,她technical issue的时间从7:29到7点36 的时间差(7分钟)。如此类推。目的是想计算每个agent technical issue了多长时间,personal 了多长时间,admin work了多长时间。
开窗函数LEAD可以实现你这个功能。用LEAD函数你可以获取每个用户下一条记录的时间,
这样两个时间求差就能计算出来每个用户两条记录之前的时间差。
你是用开窗函数前先把Date + Time拼成一个字段改成datetime类型date_time字段
SELECT agent_name,date_time, LEAD(date_time) OVER(Partition by agent_name ORDER BY date_time) AS next_date_time
from
(
select
agent_name,
cast(cast(date as varchar(30)) + ' ' + cast(time as varchar(30)) as datetime) as date_time
from t
) t1
order by agent_name,date_time
;
参考文档:https://blog.csdn.net/hamunet/article/details/110733092
lead(Time) over(partition by agent_name order by Date)