【问题标题】:How to get count in MySql with multiple condition如何在具有多个条件的 MySql 中获取计数
【发布时间】:2019-09-03 07:13:28
【问题描述】:

我有以下结构的架构。

测试表:

ID        Date                     measurement
IT-1      2019-01-01 13:12:11      50
IT-2      2019-01-02 15:10:24      75
IT-3      2019-01-03 17:19:18      100
IT-4      2019-02-02 08:17:09      25
IT-5      2019-02-04 09:13:07      150
IT-6      2019-02-05 11:10:09      98

使用Test_Table,我想在 MySql 中导出以下格式的输出。

如果该列中的值小于或等于 50,我需要将条件放在 measurement 列上,而不是在输出的不同列中显示计数。其中月份可以从Test_Table的Date列导出。

我尝试使用 case when 条件,但还没有得到想要的输出。

例子:

Month       Total_ID      <=50       50-100     100-200
Jan-2019       3            1          2          0
Feb-2019       3            1          1          1

【问题讨论】:

    标签: mysql database date count pivot


    【解决方案1】:

    您可以使用条件聚合:

    SELECT
        DATE_FORMAT(Date, '%b-%Y') As "Month",
        COUNT(*) Total_ID,
        SUM(measurement <= 50) AS "<= 50",
        SUM(measurement > 50 AND measurement <= 100) AS "50-100",
        SUM(measurement > 100 AND measurement <= 200) AS "100-200"
    FROM mytable
    GROUP BY DATE_FORMAT(Date, '%b-%Y')
    

    Demo on DB Fiddle

    | Month    | Total_ID | <= 50 | 50-100 | 100-200 |
    | -------- | -------- | ----- | ------ | ------- |
    | Jan-2019 | 3        | 1     | 2      | 0       |
    | Feb-2019 | 3        | 1     | 1      | 1       |
    

    【讨论】:

    • 谢谢 :) 如何根据条件添加总和的加法列(即对于 Jan-2019 月,50-100 的总和为 150)。
    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多