【问题标题】:MySQL get row count and group by month to column headerMySQL按月获取行数和分组到列标题
【发布时间】:2016-01-05 09:36:28
【问题描述】:

我有这个结果

Name    |  January  |    Feb    |   March
Adrian  |     12    |           |    
Adrian  |           |     15    |    
Adrian  |           |           |     9
Bryan...

使用这个查询

SELECT
    user.first_name AS name,
CASE WHEN MONTH(order.create_datetime) = '1' THEN count(order.id) END AS January,
CASE WHEN MONTH(order.create_datetime) = '2' THEN count(order.id) END AS January,
CASE WHEN MONTH(order.create_datetime) = '3' THEN count(order.id) END AS January
FROM
    order
        JOIN user ON user.id = order.create_by
WHERE
    order.create_datetime BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 23:59:59'
GROUP BY
    order.create_by,
    MONTH(order.create_datetime)
ORDER BY
    user.first_name

我需要它,但我不确定我应该做什么

Name      | January |   Feb   |   March   |TOTAL
Adrian    | 12      |    15   |     9
Bryan

最后是 TOTAL。

提前致谢

【问题讨论】:

    标签: mysql sql select group-by sum


    【解决方案1】:

    试试这个:

    SELECT U.first_name AS NAME,
           SUM(CASE WHEN MONTH(O.create_datetime) = 1 THEN 1 ELSE 0 END) AS January,
           SUM(CASE WHEN MONTH(O.create_datetime) = 2 THEN 1 ELSE 0 END) AS Feb,
           SUM(CASE WHEN MONTH(O.create_datetime) = 3 THEN 1 ELSE 0 END) AS March
    FROM ORDER O
    JOIN USER U ON U.id = O.create_by
    WHERE O.create_datetime BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 23:59:59'
    GROUP BY O.create_by
    ORDER BY U.first_name
    

    【讨论】:

      【解决方案2】:

      你需要改变你的聚合逻辑如下:

      SELECT
          user.first_name AS name,
      COUNT(CASE WHEN MONTH(order.create_datetime) = '1' THEN (order.id) END) AS JAN,
      COUNT(CASE WHEN MONTH(order.create_datetime) = '2' THEN (order.id) END) AS FEB,
      COUNT(CASE WHEN MONTH(order.create_datetime) = '3' THEN (order.id) END) AS MAR
      FROM
          order
              JOIN user ON user.id = order.create_by
      WHERE
          order.create_datetime BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 23:59:59'
      GROUP BY
          user.first_name
      ORDER BY
          user.first_name
          ;
      

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        • 2011-03-22
        • 2012-12-10
        • 1970-01-01
        相关资源
        最近更新 更多