要在MySQL中实现按type类型 统计12个月每个type类型的数量, 月份没有数据的显示月份和数据是0
时间: 2024-09-26 12:16:50 浏览: 49
要在MySQL中统计过去12个月每个`type`类型的数量,并对没有数据的月份显示0,你可以使用联合查询和IFNULL函数结合GROUP BY和DATE_FORMAT。假设有一个名为`table_name`的表,其中包含`date`和`type`字段,可以尝试以下SQL语句:
```sql
SELECT
DATE_FORMAT(date, '%Y-%m') AS month,
COUNT(*) AS type_count
FROM
table_name
WHERE
date >= CURDATE() - INTERVAL 1 YEAR
GROUP BY
month, type
ORDER BY
month;
UNION ALL
SELECT
DATE_FORMAT('2022-01', '%Y-%m') AS month,
IFNULL(SUM(CASE WHEN MONTH(`date`) = 1 THEN 1 ELSE 0 END), 0) AS type_count,
... -- 逐月填充到2022年12月,如果需要的话
FROM
table_name
WHERE
YEAR(`date`) = YEAR(CURDATE()) AND MONTH(`date`) <= 1
GROUP BY
month;
```
这个查询首先获取最近12个月的数据,然后用UNION ALL与一个范围从当前年份1月开始到当年12月的静态查询合并,对于每个月份如果没有数据,就用IFNULL函数返回0。
阅读全文