# 以时间范围来统计数据

工作中很多时候需要统计时间段内的数据量, 以下用物流包裹举例.

# 统计某段时间范围内包裹每小时/每半小时的数据量

  1. 从题意分析, 得知有两个条件:

    • 某段时间范围
    • 每小时/每半小时
  2. 解决关键点: 如何确定每半小时内的数据量?

通常来说, 首先想到的是分组, 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
修改于: 8/11/2022, 3:17:56 PM