mysql按年分组查询没有补0_mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法。...
时间: 2023-12-10 16:42:16 浏览: 80
如果想要在 MySQL 中按照年份进行分组查询,并且在结果中将缺失的年份补齐为 0,可以使用 `LEFT JOIN` 和 `COALESCE` 函数来实现。
假设需要按照 `orders` 表中的 `order_date` 字段进行年份分组统计,可以使用以下 SQL 语句:
```
SELECT year_list.year, COALESCE(SUM(order_count), 0) AS order_count
FROM (
SELECT 2015 AS year UNION
SELECT 2016 AS year UNION
SELECT 2017 AS year UNION
SELECT 2018 AS year UNION
SELECT 2019 AS year
) AS year_list
LEFT JOIN (
SELECT YEAR(order_date) AS year, COUNT(*) AS order_count
FROM orders
GROUP BY YEAR(order_date)
) AS order_stats
ON year_list.year = order_stats.year
GROUP BY year_list.year
```
以上 SQL 语句首先生成一个包含 2015 至 2019 年的年份列表,然后使用 `LEFT JOIN` 将该列表与 `orders` 表中按照年份分组统计的结果连接起来。如果某个年份在 `orders` 表中没有数据,则连接后的结果中对应的 `order_count` 字段就会为 `NULL`。最后使用 `COALESCE` 函数将 `NULL` 值替换为 0,并按照年份进行分组统计。
阅读全文