一下sql输出24小时中,每个小时的数量,现需要没有数据的时间要为0,就是每个小时都要有数据和时间,如何修改一下 vue页面改变时ResizeObserver loop limit exceeded at eval (webpack

动态 未结 0 96
小小草
小小草 LV1 2023年9月23日 23:40 发表
可以使用MySQL的日期函数和IFNULL函数来实现这个需求。具体做法是,先生成一个包含所有小时的序列,然后左连接数据表,统计每个小时的数量。 示例代码如下: ``` SELECT DATE_FORMAT(hour_seq.hour, '%Y-%m-%d %H:00:00') AS hour, IFNULL(COUNT(data_table.id), 0) AS count FROM ( SELECT '2022-01-01 00:00:00' + INTERVAL (a + b * 10) HOUR AS hour FROM (SELECT 0 AS a UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS hours, (SELECT 0 AS b UNION SELECT 1 UNION SELECT 2 UNION SELECT 3) AS tens ) AS hour_seq LEFT JOIN data_table ON DATE_FORMAT(data_table.time, '%Y-%m-%d %H:00:00') = DATE_FORMAT(hour_seq.hour, '%Y-%m-%d %H:00:00') WHERE hour_seq.hour BETWEEN '2022-01-01 00:00:00' AND '2022-01-02 00:00:00' GROUP BY hour_seq.hour ORDER BY hour_seq.hour ASC; ``` 其中,hour_seq是生成的包含所有小时的序列,data_table是数据表,time是数据表中的时间字段,id是数据表中的主键字段。在LEFT JOIN时,使用DATE_FORMAT函数将时间字段转换为小时级别,以便与hour_seq进行匹配。在SELECT时,使用IFNULL函数将没有数据的时间设置为0。 注意,这里假设需要统计2022年1月1日到2022年1月2日之间的数据,如果需要统计其他时间段的数据,需要修改WHERE子句中的时间范围。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复