【问题标题】:Sum/count with a where/if statement to find existing value使用 where/if 语句求和/计数以查找现有值
【发布时间】:2018-03-06 21:55:29
【问题描述】:

我正在构建一个用于每周报告的表格,但我从查询开始以首先了解数据。

下面是我的主要查询,它目前适用于我的主要总计,但我现有的“总计”列需要一个合作伙伴列,它将显示不同的总计。基本上,这都与电话有关,所以目前我有电话总数(电话总数、未接电话总数、呼入总数、呼出总数),但我需要一个额外的列来计算每个已知呼叫的数量我们数据库中的数字。

我有一个名为ambition.ambition_customer_data 的表,其中有一个名为phone_number 的字段。因此,如果您在我的查询中向下查看大约 8 行,我需要对 calledpartyno = ambition_customer_data.phone_number OR finallycalledpartyno = ambition_customer_data.phone_number 的数字求和或计数,如果这有意义的话。

对于其他列,我需要做同样的事情,但我必须以下面看到的legtype 列为基础,但如果我知道如何首先做到这一点,我可以将其应用于那些.我希望我可以做一个 SUM(WHERE calledpartyno IN (select phone_number from vision_customer_data)) 但这似乎不起作用。

我目前有一个不完整的 IF 语句。关于我可以做到这一点的最佳方式的任何提示?

SELECT 
    u.firstn
    , u.lastn
    , c.extension
    , 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

    , sum(if calledpartyno =) /*HERE IS MY ISSUE CURRENTLY*/

    , sum(if(Answered = 1,0,1)) AS Total_Missed

    , sum(if(LEGTYPE1 = 2,1,0) and ANSWERED = 1) AS Total_Recieved

    , sum(if(LEGTYPE1 = 1,1,0)) AS Total_Outbound

    , round(sum(Duration) / 60,2) AS Total_Talk_Time_minutes

    , sum(if(Answered = 1,0,1)) / (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)))  * 100 AS Percentage_Missed




      FROM ambition.session a
      INNER JOIN ambition.callsummary b
            ON a.NOTABLECALLID = b.NOTABLECALLID
      INNER join ambition.mxuser c
            ON a.RESPONSIBLEUSEREXTENSIONID = c.EXTENSIONID
      INNER join jackson_id.users u
            on c.extension = u.extension
      WHERE b.ts between curdate() - interval 5 day and now()
      AND c.extension IN (7276,7314,7295,7306,7357,7200,7218,7247,7331,7255,7330,7000,7215,7240,7358,7312)
      group by c.extension;

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你正在寻找这样的东西。

    SUM(CASE WHEN CONDITION_HERE THEN COLUMN_TO_SELECT END) AS `SELECTION_NAME`

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-14
      • 2014-10-16
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多