使用MYSQL IF子句的逻辑不正确

时间:2017-10-26 14:37:01

标签: mysql sql

我担心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

请注意,如果来电是入站且未接听

,则仅会将其视为未接来电

所以,我担心我的逻辑在出站情况下会出现问题。有人可以为我验证并帮助我改进这一点,以便我可以更准确地获取数据吗?

0 个答案:

没有答案