【问题标题】:COUNT one column per month (including null values) from the current month and the previous 6? [duplicate]从当前月份和前 6 个月开始,每月计算一列(包括空值)? [复制]
【发布时间】:2021-11-01 04:36:23
【问题描述】:

我有一个名为观察的表,其中我有一个名为观察的字段和创建观察的日期,我想查看在当前月份和前 6 个月期间每月进行了多少次观察,但我希望如果某个月份没有观察到,则将其计为 0。

我做了这个查询

SELECT COUNT(observation) AS observ, MONTH(created_at) AS mont
FROM observations
WHERE created_at >= DATE_ADD(NOW(), INTERVAL -6 MONTH)
GROUP BY mont;

表中只有4个月有观察,查询的结果是这样的

但我希望它给我这样的结果

我该怎么做?

【问题讨论】:

    标签: mysql sql database count


    【解决方案1】:

    为此,您必须加入月表

    SELECT observ, MO.mo as mont
    FROM (SELECT COUNT(observation) AS observ, MONTH(created_at) AS mont
    FROM observations o 
    WHERE created_at >= DATE_ADD(NOW(), INTERVAL -6 MONTH)
    GROUP BY mont) o RIGHT JOIN 
    ( SELECT 1 as mo UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
    UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) MO
    ON o.mont = MO.mo
    
    观察 |蒙特 -----: | ---: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 1 | 9 | 10 | 11 | 12

    db小提琴here

    【讨论】:

    猜你喜欢
    • 2022-11-22
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多