0
我有一个将队列日志转储到MySQL的Asterisk 13 PBX,我试图做一些基本的报告 - 具体而言,代理分解的平均通话时长。Mysql - 获取两列的平均值,用where子句,按另一列分组
目前,我已经得到了这一点,这工作,但不包含所有的呼叫:
SELECT `asterisk`.`queue_log`.`agent`, count(`asterisk`.`queue_log`.`event`) AS 'calls_taken', AVG(`asterisk`.`queue_log`.`data2`) AS 'aht'
FROM `asterisk`.`queue_log`
WHERE `asterisk`.`queue_log`.`event` IN ("COMPLETEAGENT", "COMPLETECALLER") AND
`time` BETWEEN '2015-12-27' AND '2015-12-28'
GROUP BY `agent`
ORDER BY `agent` ASC
我遇到的问题是,还有其他的事件代码(“BLINDTRANSFER”,“ATTENDEDTRANSFER “)将相关数据存储在data4
列中,而不是data2
。
我怎么能基本上相结合,为其他事件data2
的一些事件,并data4
,然后得到一个平均的组合数据的,由agent
场分组?
不幸的是,我无法真正改变应用程序的行为,使其更加一致地存储数据。
这看起来像我需要的,但一个后续问题。大约有十几个事件代码,但那四个是我关心的事件代码。如果在这种情况下不能搞乱平均计算,我可以做一个嵌套吗? – csyria
不确定你的意思。 'WHERE'子句将它限制为只有这4个。 – Barmar
我应该在尝试之前试过!我之前正在尝试使用子查询,这让我认为'AVG'内的'IF'行为会有所不同。经过测试,效果很好,被接受为答案。谢谢! – csyria