You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取每小时统计数?指定小时计数的SQL查询问题

解决按小时统计数据的SQL语法问题

嘿,我来帮你捋捋这个SQL的问题~

首先你的原SQL存在逻辑优先级错误:因为SQL中AND的优先级比OR高,所以你的条件会被数据库解析成:

(year=2018 and month=01 and day=02 and hour=01) OR hour=02 OR hour=03

这就意味着,查询结果会包含所有hour=02或hour=03的数据,不管日期是不是2018年1月2日,完全不符合你的需求。

修正后的两种写法

方法1:给OR条件加括号

通过括号把hour的条件包裹起来,确保日期条件和所有小时条件同时生效:

select count_hr_1, count_hr_2, count_hr_3 
from db.table 
where year=2018 and month=01 and day=02 
and (hour=01 OR hour=02 OR hour=03);

方法2:用IN替代多个OR

这种写法更简洁易读,效果和上面完全一致:

select count_hr_1, count_hr_2, count_hr_3 
from db.table 
where year=2018 and month=01 and day=02 
and hour in (01, 02, 03);

额外补充:如果是按小时统计总数

如果你的需求其实是统计每个小时的记录总数(而不是查询表中已有的count_hr_*列),可以用分组查询的方式,这样能直接得到每个小时对应的计数:

select hour, count(*) as hourly_count
from db.table
where year=2018 and month=01 and day=02
and hour in (01, 02, 03)
group by hour;

内容的提问来源于stack exchange,提问作者Liondancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:53:37