mysql - 计算使用 IF 语句和别名的 2 个字段

标签 mysql sql

在这件事上我的头撞到了墙上:

SELECT 
    vicidial_closer_log.CAMPAIGN_I,
    vicidial_closer_log.USER_GROUP,
    vicidial_closer_log.LEAD_ID,
    SUM(IF(PHONE_CODE = '1', 1,0)) AS 'Call_Count',
    SUM(IF(STATUS = 'DROP', 1, 0)) AS 'DROPS',
    SUM(IF(STATUS = 'AFTHRS',1,0)) AS 'After Hours'
FROM
    vicidial_closer_log
group by vicidial_closer_log.CAMPAIGN_I
;

我需要计算掉线率,基本上将掉线分为调用次数。关于如何实现这一目标有什么想法吗?

最佳答案

只需进行除法即可:

SELECT vcl.CAMPAIGN_I, vcl.USER_GROUP, vcl.LEAD_ID,
       SUM(PHONE_CODE = '1') AS Call_Count,
       SUM(STATUS = 'DROP') AS DROPS,
       SUM(STATUS = 'AFTHRS') AS AfterHours,
       (SUM(STATUS = 'DROP') / NULLIF(SUM(PHONE_CODE = '1'), 0)) AS DropRate
FROM vicidial_closer_log vcl
GROUP BY vcl.CAMPAIGN_I;

注释:

  • 表别名 (vcl) 使查询更易于编写和阅读。
  • 在 MySQL 中,您不需要 if() 来进行计数;您可以只使用 bool 表达式。
  • 不要对列别名使用单引号。最好选择不需要转义的名称。如果这样做,请使用反引号。
  • 您可以使用 NULLIF() 处理被零除。

关于mysql - 计算使用 IF 语句和别名的 2 个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952842/

相关文章:

java - 如何在 jdbc url 中放入和号 (&)?

mysql - 通过sql计算用户看到的唯一项目

mysql - Centos 7上安装MySQL 5.7问题-目录初始化问题

mysql - 从两个表中选择位置

mysql - 根据其他表行更新行

Php Query In循环不更新数据库

mysql - Play 2.0 Complex join query如何解析(Anorm)

mysql - SQL 分组依据两列

mysql trigger 存储触发器已被调用存储触发器的语句使用

php - 取决于项目查询的意外项目评论