我被要求提供一份报告,显示每个时间段内单个电话代理的性能,在运行时间与部门的平均值相比。 我设法创建主SQL以计算日期的总计,分组到主题代理和组的其余部分。 问题是我需要为代理使用sum,但是对于剩余的组,我需要使用sum(或者至少能够将答案除以13)。
我认为Case就是答案,但对于我的生活,我无法理解。我已经在线查看了多个示例,但它们似乎都处理了各个字段值,而不是计算不同。
这是我到目前为止所拥有的。
declare @Extension varchar(3) ='215'
select sum(inward) + sum(transfers) + sum(lost) as Incoming,sum(outgoing) as Outgoing,sum(transfers) as Transfers,sum(lost) as Lost,GRP,CallDate
from (
select
CASE
When extension in (@Extension) then 'Selected'
When extension in('263','250','275','215','223','614','134','292','213','225','271','256','302') then 'Main Office Housing'
ELSE 'Unknown'
END AS GRP,
Cast(calltime as date) As CallDate,
case when calltype='i' then 1 else 0 end as inward,
case when calltype='o' then 1 else 0 end as outgoing,
case when calltype='ia' then 1 else 0 end as lost,
case when calltype = 'if' then 1 else 0 end as transfers
From lrcalldetail With (NOLOCK)
where calltime between DATEADD(d,-7,getdate()) and getdate()
) ALLCALLS
where grp <>'UNKNOWN'
Group by Allcalls.grp, ALLCALLS.CallDate
Order by GRP,CallDate
它让我发疯,毫无疑问有人会把它撞出公园。
这是相关表格的ddl。
CREATE TABLE [dbo].[lrcalldetail](
[calldetailid] [int] IDENTITY(1,1) NOT NULL,
[cdrdataid] [int] NULL,
[recordingid] [int] NULL,
[calltime] [datetime] NOT NULL,
[totalduration] [int] NULL,
[ringduration] [int] NULL,
[connectedduration] [int] NULL,
[channel] [varchar](50) NULL,
[extension] [varchar](50) NULL,
[callerid] [varchar](50) NULL,
[calledid] [varchar](50) NULL,
[team] [varchar](50) NULL,
[takenby] [varchar](50) NULL,
[cost] [float] NULL,
[type] [varchar](50) NULL,
[subtype] [varchar](50) NULL,
[transferfromcalldetailid] [int] NULL,
[calltype] [varchar](50) NULL,
[recordedtime] [datetime] NULL,
[linetype] [char](2) NULL,
[transfertocalldetailid] [int] NULL,
[calldirection] [char](1) NULL,
[dialduration] [int] NULL,
[site] [varchar](128) NULL,
[pbxcallid] [varchar](50) NULL,
[status] [varchar](50) NULL,
[trunk] [varchar](50) NULL,
[totaltrunkcalls] [int] NULL,
[recordingidmatchrating] [bigint] NULL,
[processstage] [int] NULL,
[dstchannel] [varchar](50) NULL,
[dsttrunk] [varchar](50) NULL,
[account] [varchar](50) NULL,
[accesscode] [varchar](50) NULL,
[internal] [char](1) NULL,
[destextension] [varchar](50) NULL,
[organisationguid] [uniqueidentifier] NULL,
[groupid] [int] NULL,
[agentid] [varchar](50) NULL,
[endtime] [datetime] NULL,
[userid] [int] NULL,
CONSTRAINT [PK_lrcalldetail] PRIMARY KEY CLUSTERED
(
[calldetailid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
这是一些示例数据
calltime extension calltype calldirection
2017-12-13 09:17:50.000 256 ia I
2017-12-13 09:20:55.000 271 i I
2017-12-13 09:21:36.000 271 i I
2017-12-13 09:42:34.000 223 o O
2017-12-13 09:42:50.000 215 ia I
2017-12-13 09:43:50.000 263 ia I
2017-12-13 09:47:57.000 225 i I
2017-12-13 09:48:10.000 225 i I
2017-12-13 09:48:50.000 256 ia I
2017-12-13 09:55:31.000 215 o O
2017-12-13 10:02:01.000 223 o O
2017-12-13 10:02:50.000 250 ia I
2017-12-13 10:03:50.000 215 ia I
2017-12-13 10:03:50.000 225 ia I
2017-12-13 10:05:48.000 215 i I
2017-12-13 10:05:55.000 215 i I
2017-12-13 10:06:51.000 250 if I
2017-12-13 10:24:50.000 134 ia I
2017-12-13 10:28:40.000 263 if I
2017-12-13 10:37:57.000 223 o O
2017-12-13 10:39:19.000 215 o O
2017-12-13 10:41:57.000 223 o O
2017-12-13 10:50:25.000 614 o O
2017-12-13 10:51:36.000 614 o O
2017-12-13 10:53:39.000 215 o O
2017-12-13 10:58:50.000 134 ia I
2017-12-13 10:59:57.000 614 o O
2017-12-13 11:03:46.000 263 if I
2017-12-13 11:10:27.000 256 if I
2017-12-13 11:13:50.000 302 ia I
2017-12-13 11:14:22.000 225 o O
2017-12-13 11:16:50.000 256 ia I
2017-12-13 11:17:18.000 614 ia I
2017-12-13 11:17:50.000 256 ia I
2017-12-13 11:18:36.000 614 i I
2017-12-13 11:18:38.000 614 i I
2017-12-13 11:23:33.000 614 i I
2017-12-13 11:23:55.000 614 i I
2017-12-13 11:24:25.000 614 o O
2017-12-13 11:33:12.000 225 o O
2017-12-13 11:40:18.000 271 if I
2017-12-13 11:42:12.000 215 o O
2017-12-13 11:43:56.000 614 i I
2017-12-13 11:44:29.000 614 i I
2017-12-13 11:50:31.000 250 o O
2017-12-13 11:55:40.000 223 o O
2017-12-13 11:56:50.000 256 ia I
2017-12-13 12:01:50.000 134 ia I
2017-12-13 12:06:50.000 302 ia I
2017-12-13 12:36:50.000 250 ia I
2017-12-13 12:37:50.000 250 ia I
2017-12-13 13:01:50.000 256 ia I
2017-12-13 13:01:50.000 256 ia I
2017-12-13 13:11:50.000 250 ia I
2017-12-13 13:16:50.000 225 ia I
2017-12-13 13:28:50.000 302 ia I
2017-12-13 13:31:50.000 223 ia I
2017-12-13 13:53:50.000 275 ia I
2017-12-13 13:57:50.000 292 ia I
2017-12-13 13:58:50.000 302 ia I
2017-12-13 14:00:50.000 302 ia I
2017-12-13 14:13:50.000 250 ia I
2017-12-13 14:20:48.000 614 o O
2017-12-13 14:21:50.000 225 ia I
2017-12-13 14:38:12.000 292 o O
2017-12-13 14:39:22.000 263 if I
2017-12-13 14:40:04.000 256 o O
2017-12-13 14:45:52.000 302 i I
2017-12-13 14:45:57.000 302 i I
2017-12-13 14:48:17.000 256 o O
2017-12-13 14:51:56.000 302 i I
2017-12-13 14:52:39.000 302 i I
2017-12-13 15:01:50.000 256 ia I
2017-12-13 15:01:57.000 302 o O
2017-12-13 15:07:43.000 223 if I
2017-12-13 15:12:57.000 302 i I
2017-12-13 15:12:58.000 302 i I
2017-12-13 15:15:50.000 263 ia I
2017-12-13 15:18:40.000 263 i I
2017-12-13 15:18:57.000 263 i I
2017-12-13 15:35:58.000 223 o O
2017-12-13 15:41:56.000 275 i I
2017-12-13 15:42:05.000 275 i I
2017-12-13 15:44:07.000 223 o O
2017-12-13 15:52:08.000 223 o O
2017-12-13 15:55:42.000 223 o O
2017-12-13 16:01:50.000 271 ia I
2017-12-13 16:02:40.000 250 o O
2017-12-13 16:15:30.000 223 o O
2017-12-13 16:17:57.000 223 i I
2017-12-13 16:18:07.000 223 i I
2017-12-13 16:28:50.000 225 ia I
2017-12-13 16:36:50.000 271 ia I
2017-12-13 16:45:51.000 614 ia I
2017-12-13 16:48:50.000 614 ia I
2017-12-13 16:49:50.000 271 ia I
2017-12-13 16:54:59.000 263 o O
2017-12-13 16:55:09.000 263 o O
2017-12-13 17:03:02.000 215 o O
2017-12-13 17:18:28.000 225 o O
2017-12-13 17:26:31.000 225 o O
2017-12-14 08:37:27.000 302 o O
2017-12-14 08:40:26.000 302 o O
2017-12-14 08:44:45.000 263 o O
2017-12-14 08:47:43.000 271 o O
2017-12-14 09:21:50.000 256 ia I
2017-12-14 09:26:33.000 225 o O
2017-12-14 09:29:45.000 225 o O
2017-12-14 09:35:39.000 225 o O
2017-12-14 09:35:54.000 614 i I
2017-12-14 09:35:57.000 614 i I
2017-12-14 09:38:00.000 275 if I
2017-12-14 09:44:21.000 225 o O
2017-12-14 09:49:11.000 213 o O
2017-12-14 09:51:52.000 614 o O
2017-12-14 09:51:57.000 614 o O
2017-12-14 09:55:28.000 614 o O
2017-12-14 10:02:00.000 225 o O
2017-12-14 10:05:49.000 225 o O
2017-12-14 10:06:50.000 250 ia I
2017-12-14 10:06:57.000 292 o O
2017-12-14 10:07:02.000 292 o O
2017-12-14 10:20:23.000 263 o O
2017-12-14 10:26:23.000 614 if I
答案 0 :(得分:0)
如果您在内部查询中包含extension
,那么您可以在外部查询中COUNT(DISTINCT extension)
了解每个grp
中有多少个扩展名。然后,您可以按此计数除以总和。
这也将计算单个目标扩展的平均值 - 但由于样本大小为1的平均值也等于总和,因此应该没问题。
(你要么在每个表达式中重复使用COUNT(DISTINCT extension)
,要么引入更高级别的次级制作以允许你写Incoming/Cnt
- 同时注意你很可能会去在整数数学中工作所以你可能希望CAST
到decimal
或多个1.0
以确保在分割期间不会出现整数截断问题。