ZBLOG

mysql 统计一个月的数据如果当天没有数据显示0

您可以使用 MySQL 的 LEFT JOINCOALESCE 函数来统计一个月的数据并显示缺失日期为 0。以下是一个示例查询,它获取 2021 年 7 月每天的数据:

SELECT DATE_FORMAT(dates.date, '%Y-%m-%d') AS date,
       COALESCE(SUM(data_table.value), 0) AS total_value
FROM (
    SELECT DATE('2021-07-01') + INTERVAL (t4 + t16 + t64 + t256) DAY AS date
    FROM (SELECT 0 AS t4 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3) AS T4,
         (SELECT 0 AS t16 UNION SELECT 4 UNION SELECT 8 UNION SELECT 12) AS T16,
         (SELECT 0 AS t64 UNION SELECT 16 UNION SELECT 32 UNION SELECT 48) AS T64,
         (SELECT @counter := @counter +1 FROM information_schema.tables, (SELECT @counter:= -1) as counter LIMIT 256)
    WHERE DATE('2021-07-01') + INTERVAL (t4 + t16 + t64 + t256) DAY <= LAST_DAY('2021-07-01')
) dates
LEFT JOIN data_table ON DATE(dates.date) = DATE(data_table.date_field)
WHERE YEAR(dates.date) = '2021' AND MONTH(dates.date) = '07'
GROUP BY dates.date;

在上面的查询中,您需要将 data_table 替换为实际表名,并将 date_fieldvalue 替换为实际表中的字段名称。

这个查询会生成一个包含所有日期(从指定月份的第一天到最后一天)的日期表。然后,使用 LEFT JOIN 将此表连接到数据表上,并使用 COALESCE 函数将缺失日期的值设置为 0。

希望这可以帮助到您!

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5135

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?