MySQL 聚合查询未按预期运行

标签 mysql sql

我正在尝试汇总一些通话记录并做错了事 - 但不确定是什么。

我有以下查询:

SELECT 
    c.name, 
    IF(MONTH(start) = 1, SUM(duration),0) AS 'Jan',
    IF(MONTH(start) = 2, SUM(duration),0) AS 'Feb',
    IF(MONTH(start) = 3, SUM(duration),0) AS 'Mar',
    IF(MONTH(start) = 4, SUM(duration),0) AS 'Apr',
    IF(MONTH(start) = 5, SUM(duration),0) AS 'Jun',
    IF(MONTH(start) = 6, SUM(duration),0) AS 'Jul',
    IF(MONTH(start) = 7, SUM(duration),0) AS 'Aug'
FROM
    call_history ch, client c
WHERE
    ch.client_reseller_id = c.id
GROUP BY ch.client_reseller_id
ORDER BY c.name;

start 字段包含调用的日期/时间。该表只包含一年的记录,所以不用担心没有过滤年份。

我得到的结果不符合预期:

+--------------------------------+----------+------+------+--------+------+------+------+
| name                           | Jan      | Feb  | Mar  | Apr    | Jun  | Jul  | Aug  |      
|+-------------------------------+----------+------+------+--------+------+------+------+
| Come company                   |  5243080 |    0 |    0 |      0 |    0 |    0 |    0 |
| Other cust                     |  4085085 |    0 |    0 |      0 |    0 |    0 |    0 |
| Someone                        |  1449543 |    0 |    0 |      0 |    0 |    0 |    0 |
| Demo Reseller                  |     2342 |    0 |    0 |      0 |    0 |    0 |    0 |
+--------------------------------+----------+------+------+--------+------+------+------+

我做错了什么?

最佳答案

这样改

SELECT 
    c.name, 
   SUM(IF(MONTH(start) = 1, duration,0)) AS 'Jan',
    SUM(IF(MONTH(start) = 2, duration,0)) AS 'Feb',
    SUM(IF(MONTH(start) = 3, duration,0)) AS 'Mar',
    SUM(IF(MONTH(start) = 4, duration,0)) AS 'Apr',
    SUM(IF(MONTH(start) = 5, duration,0)) AS 'Jun',
    SUM(IF(MONTH(start) = 6, duration,0)) AS 'Jul',
    SUM(IF(MONTH(start) = 7, duration,0)) AS 'Aug'
FROM
    call_history ch, client c
WHERE
    ch.client_reseller_id = c.id
GROUP BY ch.client_reseller_id
ORDER BY c.name;

关于MySQL 聚合查询未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25325309/

相关文章:

mysql - 选择一个表中与另一表中至少相同数量的 id 匹配的所有 id

php - MySQL 查询不插入行

php - Mysql - 从文本中选择单词

mysql - 最优二元线性回归计算

sql - 查找所有没有关联记录的记录

mysql - 数据库设计,如何设置表

sql - MySQL - 条件选择

mysql - 以 Ruby on Rails 3 中 2 个表的形式显示数据

MySQL 一张4GB表或80张小表

java - 使用实体管理器时,没有为该名称定义查询