我有一个查询正确地返回所有内容,除了我的总列(总和)之间存在一些轻微的不一致之外,我无法弄清楚它为什么会发生或者有更好的方法来处理它。没有正确别名的总和值
这里的查询的部分问题:
SELECT
c.extension
,RESPONSIBLEUSEREXTENSIONID
, sum(Duration) -- seconds
, round(sum(Duration)/60,2) -- minutes
, sum(if(LEGTYPE1 = 1,1,0)) -- outbound
, sum(if(LEGTYPE1 = 2,1,0) and ANSWERED = 1) -- inbound
, sum(if(Answered = 1,0,1)) -- missed
, count(if(LEGTYPE1 = 1,1,0)) + count(if(LEGTYPE1 = 2,1,0)) -- as total_calls
, now()
, b.ts
FROM cdrdb.session a
INNER JOIN cdrdb.callsummary b
ON a.NOTABLECALLID = b.NOTABLECALLID
INNER join cdrdb.mxuser c
ON a.RESPONSIBLEUSEREXTENSIONID = c.EXTENSIONID
WHERE b.ts BETWEEN curdate() - interval 30 day and curdate()
AND c.extension IN (7276,7314,7295,7306,7357,7200,7218,7247,7331,7255,7330,7000,7215,7240,7358,7312)
group by DATE(b.ts),c.extension;
这里是前几个结果:
总通话柱应该添加呼入,呼出和未接来电。你可以看到大多数情况下,总数是正确的,但特别是在第一和第三行中,它是关闭的。如果我给公式AS
别名并尝试对别名进行求和,则表示该列不存在。
有什么我“米失踪是造成不一致的问题,更重要的是有一个更直接的方式,我可以总结这3列/值?
使用'总和(LEGTYPE1 = 1)+ SUM(LEGTYPE1 = 2)'总通话,并添加' RESPONSIBLEUSEREXTENSIONID'在'group by'中。 –