mysql - 从当前月份和前 6 个月开始每月计数一列(包括空值)?
问题描述
我有一个名为观察的表,其中我有一个名为观察的字段和创建观察的日期,我想查看在当前月份和前 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个月的观察,查询的结果是这样的
但我希望它能给我这样的结果
我该怎么做?
解决方案
为此,您必须加入月表
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<>在这里摆弄
推荐阅读
- python - Pandas:一列除以另一列得到两列 NaN
- ajax - Laravel 和 vue - VerifyCsrfToken 除了不工作
- c++ - 将成员函数作为参数传递错误:“必须调用对非静态成员函数的引用”
- docker - dockerfile 中的 COPY 从预期用户更改为 root 用户
- python - Sphinx 从过时的源代码生成 HTML 输出
- ruby - 尝试使用 Shopify connect 连接 Shopify 应用程序会引发错误
- python - Python 多级导入
- r - R:计算分数发生一定变化所需的时间
- javascript - 如何解决未捕获的 TypeError:无法读取属性“字段”制表符
- c++ - ADL 不能在外面工作(即使是结构)