我担心MySQL IF子句的逻辑错误。
我已插入表格为我们的CSR电话代理商创建报告。它从电话数据库中提取数据并聚合每个用户的数据。除了出站呼叫之外,一切似乎都非常重要。在这种情况下,用户应该有11,但它只显示1的信用。
在电话数据库中,字段legtype1
确定入站或出站。如果它是1,则它是出站的,如果它是2,则它是入站的。
这是脚本:
SELECT
extension
, sum(Duration) AS total_talk_time_seconds
, sum(if(LEGTYPE1 = 1,1,0)) AS total_outbound
, sum(if(LEGTYPE1 = 2,1,0) and ANSWERED = 1) AS total_inbound
, sum(if(Answered = 1,0,1)) AS total_missed
, SUM(IF(LEGTYPE1 = 1, 1, 0)) + -- outbound calls
SUM(IF(LEGTYPE1 = 2, 1, 0) AND ANSWERED = 1) + -- inbound calls
SUM(IF(Answered = 1, 0, 1)) AS total_calls
FROM cdrdb.session a
group by extension;
以下是手机数据库的示例数据:
extension | duration | legtype1 | answered |
--------------------------------------------
7200 20 1 0
7200 20 2 1
7200 20 1 1
7200 20 2 1
7200 20 2 1
7200 20 1 1
7200 20 2 1
7200 20 1 0
7200 20 1 1
7200 20 1 0
7200 20 2 1
7200 20 1 1
7200 20 2 1
7200 20 2 1
7200 20 1 1
7200 20 2 1
7200 20 1 0
7200 20 1 1
应输出:
Extension | Total_talk_time_seconds | total_outbound | total_inbound | missed | total_calls
7200 360 10 8 0 18
请注意,如果来电是入站且未接听
,则仅会将其视为未接来电所以,我担心我的逻辑在出站情况下会出现问题。有人可以为我验证并帮助我改进这一点,以便我可以更准确地获取数据吗?