数据库 
首页 > 数据库 > 浏览文章

MySQL按小时查询数据,没有的补0

(编辑:jimmy 日期: 2025/2/25 浏览:3 次 )

需求背景

一个统计接口,前端需要返回两个数组,一个是0-23的小时计数,一个是各小时对应的统计数。

思路 直接使用group by查询要统计的表,当某个小时统计数为0时,会没有该小时分组。思考了一下,需要建立辅助表,只有一列小时,再插入0-23共24个小时

CREATE TABLE hours_list (
 hour int NOT NULL PRIMARY KEY
)

先查小时表,再做连接需要查的表,即可将没有统计数的小时填充上0。这里由于需要查多个表中,create_time在每个小时区间内、且SOURCE_ID等于查询条件的统计之和,所以UNION ALL了多张表

	SELECT
			 t.HOUR,
			 sum(t.HOUR_COUNT) hourCount
			FROM
    (SELECT
     hs. HOUR AS HOUR,
     COUNT(cs.RECORD_ID) AS HOUR_COUNT
    FROM
     cbc_hours_list hs
    LEFT JOIN cbc_source_0002 cs ON HOUR (cs.create_time) = hs. HOUR
    AND cs.create_time > #{startTime}
    AND cs.create_time <= #{endTime}
    <#if sourceId"text-align: center">MySQL按小时查询数据,没有的补0

上一篇:MySQL查询缓存的小知识
下一篇:Mysql技术内幕之InnoDB锁的深入讲解
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?