# 以时间范围来统计数据
工作中很多时候需要统计时间段内的数据量, 以下用物流包裹举例.
# 统计某段时间范围内包裹每小时/每半小时的数据量
从题意分析, 得知有两个条件:
- 某段时间范围
- 每小时/每半小时
解决关键点: 如何确定每半小时内的数据量?
通常来说, 首先想到的是分组, count(量点), 来达到计算分组内数据量.
因此需要制造出每半小时的为一组的分组字段用来分组.
对于每小时而言是比较简单的, 可以直接利用mysql函数hour(time)进行转换.
而对于半小时而言就需要用某种方式将其归纳为一组
# 半小时分组 - 对于半小时分组也是需要第一分组为小时, 第二分组才是分钟.
select
hour(colums_time) g_hours,
floor(minute(colums_time)/30)*30, g_minute,
count(package_id) num
from package
group by g_hours,g_minute
# 另一种半小时分组, 没有上一种适用
if(minute(colums_time)>=0 and minute(colums_time)<30, 0, 1) g_minutes