MySql时间粒度下分组统计

# 我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况


-- 按照不同时间粒度进行分组统计


-- 按天
SELECT date(`下单日期时间`) as date1
       ,count(1) as num 
from orders
group by   date(`下单日期时间`)
order by date1 asc;

-- 按照每小时

SELECT  date_format(`下单日期时间`,'%Y-%m-%d %H:00:00') as date2
       ,count(1) as num 
from orders
group by date_format(`下单日期时间`,'%Y-%m-%d %H:00:00')
order by date2 asc;


-- 按照半小时
SELECT  date3
			 ,count(1) as num
from 
(SELECT    DATE_FORMAT( concat(date(`下单日期时间`)
															 ,' '
															 ,HOUR(`下单日期时间`)
															 ,':'
															 ,floor(MINUTE(`下单日期时间`)/30) * 30 
															  )
												,'%Y-%m-%d %H:%i')  as date3
-- 					,concat(date(`下单日期时间`),' '
-- 											  ,HOUR(`下单日期时间`)
-- 												,':'
-- 												,floor(MINUTE(`下单日期时间`)/30) * 30 
-- 								 ) as date3_1 /* 必须要规范格式的原因 */
			 ,`用户id` 
from orders) t -- 将维度进行加工转换成业务需求的维度
group by date3
order by date3 asc;


-- 按照N分钟进行统计



SET @terval := 20; -- 进阶:设定参数:


SELECT  date3
			 ,count(1) as num
from 
(SELECT    DATE_FORMAT( concat(date(`下单日期时间`)
															 ,' '
															 ,HOUR(`下单日期时间`)
															 ,':'
															 ,floor(MINUTE(`下单日期时间`)/@terval) * @terval 
															  )
												,'%Y-%m-%d %H:%i')  as date3
			 ,`用户id` 
from orders) t -- 将维度进行加工转换成业务需求的维度
group by date3
order by date3 asc;

-- 按照分钟统计:

SELECT  date_format(`下单日期时间`,'%Y-%m-%d %H:%i:00') as date4
       ,count(1) as num 
from orders
group by date_format(`下单日期时间`,'%Y-%m-%d %H:%i:00')
order by date4 asc;



-- 作业1:使用SQL、Python复盘一下上周时间格式转换问题,并结合Excel三者实现逻辑进行对比;

-- 作业2:实现每半个小时/每小时/每2小时获得一次均值数据

-- 按照每N小时

SET @terval := 2; -- 每2小时


SELECT  date5
			 ,avg(`订单金额` ) as avg_income
from 
(SELECT    DATE_FORMAT( concat(date(`下单日期时间`)
															 ,' '
															 ,floor(HOUR(`下单日期时间`)/@terval)*@terval
															 )
												,'%Y-%m-%d %H')  as date5
			 ,`订单金额` 
from orders) t -- 将维度进行加工转换成业务需求的维度
group by date5
order by date5 asc;


转载:https://blog.csdn.net/weixin_44976611/article/details/119306556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值