按代理分解总数,然后按天分类

时间:2015-12-04 16:43:12

标签: sql tsql

我需要更改此查询,以便按时分解每个座席的总呼叫数。

目前我已经让它工作了一天,但我想看看我是否可以使用相同的查询来抓住一周中的每一天。

以下是目前正在返回的内容:

extension   Agent   MondayTotalCalls
237         Agent 1       62
275         Agent 2       63
233         Agent 3       58
272         Agent 4       65
245         Agent 5       61
236         Agent 6        2
239         Agent 7       45

以下是我目前使用的查询:

select 
     u.extension
    ,u.firstname + ' ' + u.lastname as Agent
    ,count(s.notablecallid) as MondayTotalCalls
from ##session s
inner join ##callsummary cs on cs.notablecallid = s.notablecallid
inner join ##mxuser u on u.extensionid = s.extensionid2
inner join ##acdgroup g on s.serviceextension2 = g.extension
where g.extension in ('700', '702')
and s.creationtimestamp between @monday_start_datetime and @monday_end_datetime
group by u.firstname, u.lastname, u.extension

我在查询中已经构建了其他可能有用的变量。

我每天有两个变量starttimeendtime(星期一至星期五) 我需要daterange所需的特定周@converted_start_datetime@converted_end_datetime

将整个daterange数据放入每个表格##session##callsummary等。

对于每个代理商,我需要一周中每一天的总数。

1 个答案:

答案 0 :(得分:0)

我认为按datename(weekday, creationtimestamp)聚合会做你想做的事情:

select datename(weekday, creationtimestamp) as dow, u.extension
       u.firstname + ' ' + u.lastname as Agent,
       count(s.notablecallid) as MondayTotalCalls
from ##session s inner join
     ##callsummary cs
     on cs.notablecallid = s.notablecallid inner join
     ##mxuser u
     on u.extensionid = s.extensionid2 inner join
     ##acdgroup g
     on s.serviceextension2 = g.extension
where g.extension in ('700', '702') @monday_end_datetime
group by datename(weekday, creationtimestamp), u.firstname, u.lastname, u.extension
order by min(creationtimestamp);