mysql 有一个表A 有aa ab ac status四个字段,ab是datetime类型,status是int类型有1、2、3、4、5 五个状态, 写一个查询 汇总当前年 每个月份 status=1、status=2、status=3、status=4、status=5的条数
时间: 2024-01-27 13:06:22 浏览: 117
mysql 查询当天、本周,本月,上一个月的数据
好的,可以使用如下的 SQL 语句实现:
```
SELECT MONTH(ab) AS month,
SUM(CASE WHEN status=1 THEN 1 ELSE 0 END) AS count_1,
SUM(CASE WHEN status=2 THEN 1 ELSE 0 END) AS count_2,
SUM(CASE WHEN status=3 THEN 1 ELSE 0 END) AS count_3,
SUM(CASE WHEN status=4 THEN 1 ELSE 0 END) AS count_4,
SUM(CASE WHEN status=5 THEN 1 ELSE 0 END) AS count_5
FROM A
WHERE YEAR(ab) = YEAR(NOW())
GROUP BY MONTH(ab);
```
这条 SQL 语句的含义是:选取表 A 中在当前年份内的数据,根据 ab 字段的月份和 status 字段进行分组,分别统计每个月份中每种状态的数据条数。
其中,`MONTH(ab)` 函数用于提取 ab 字段的月份,`YEAR(ab)` 函数用于提取 ab 字段的年份,`NOW()` 函数用于获取当前时间。使用 `SUM(CASE WHEN ... THEN ... ELSE ... END)` 函数分别对每种状态进行判断并统计条数,最后使用 `GROUP BY` 子句对月份进行分组。
阅读全文