mysql嵌套分组查询,嵌套分组MySQL查询

我有一个调用详细信息表,需要根据日期分组编译摘要查询.问题是单个呼叫ID可以有多行,如下所示.处置是1 =放弃,2 =处理. RNA = Ring No Answer.

Call ID | Disposition | Call Start | Queue Name | Agent Name | RNA

010001 2 2014-12-03 13:02 Acme_Brick Joe Schmoe FALSE

010002 1 2014-12-03 13:36 Anvils_R_Us Jane Doe TRUE

010003 2 2014-12-03 14:22 Acme_Brick Dan Post TRUE

010003 2 2014-12-03 14:22 Acme_Brick Joe Schmoe FALSE

SET @reportdate = '2014-12-03';

SELECT `Queue Name`,

SUM(CASE WHEN Disposition = 2 THEN 1 ELSE 0 END) AS handled,

COUNT(DISTINCT `Call ID`) AS calls

FROM call_details

WHERE CAST(`Call Start` AS DATE) = @reportdate

GROUP BY `Queue Name`

ORDER BY `Queue Name` ASC;

因此,处理的SUM(处理时为处理= 2 THEN 1 ELSE 0 END)会导致我出现问题.下面的第一个表是我得到的.第二个是它应该是什么.

Queue Name | Handled | Calls

Acme_Brick 3 2

Anvils_R_Us 0 1

Queue Name | Handled | Calls

Acme_Brick 2 2

Anvils_R_Us 0 1

我知道问题在于Disposition字段中的CASE;我只是不确定是否必须创建一个中间摘要表,或者如果有一个复合分组,我可以完成,这将找出多行详细信息调用.提前感谢帮助;).

解决方法:

使用条件COUNT(DISTINCT删除重复项:

SELECT `Queue Name`,

COUNT(DISTINCT CASE WHEN Disposition = 2 THEN `Call ID` END) AS handled,

COUNT(DISTINCT `Call ID`) AS calls

FROM call_details

WHERE CAST(`Call Start` AS DATE) = @reportdate

GROUP BY `Queue Name`

ORDER BY `Queue Name` ASC;

标签:mysql,sql,grouping

来源: https://codeday.me/bug/20190624/1275727.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值