SQLServer根据日期分组、根据时间段分组(每三个小时一组)
SQLServer根据⽇期分组、根据时间段分组(每三个⼩时⼀组)所⽤数据表:
⼀、根据⽇期分组
1. 使⽤convert() 函数⽅式
--根据年⽉
select convert(varchar(7),CreatTime,120)⽇期,COUNT(*)次数,sum(Money)总数from Orders
group by convert(varchar(7),CreatTime,120)
根据convert 的第⼀个参数,设置结果的长度达到更具年⽉分组或年⽉⽇分组等
2017-09 长度 7 varchar(7)
2017-09-01 长度10 varchar(10)
--根据年⽉⽇
select convert(varchar(10),CreatTime,120)⽇期,COUNT(*)次数,sum(Money)总数from Orders
group by convert(varchar(10),CreatTime,120)
2. 先查出对应的年⽉⽇等时间,再根据查询出的字段分组
--或者
select YEAR(CreatTime)年,month(CreatTime)⽉,COUNT(*)次数,sum(Money)总数from Orders
group by month(CreatTime),YEAR(CreatTime)
qq分组简单order by年,⽉asc
⼆、根据时间段分组(每三个⼩时⼀组)
dataname:返回代表指定⽇期的指定⽇期部分的字符串。⼀个参数代表返回的格式,第⼆个参数为具体值
dw:星期⼏,qq, q:季度,yy, yyyy:年,mm,m:⽉,dd、d:⽇,hh:⼩时,mi, n:分钟 ss、s:秒,ms:毫秒
select CONVERT(varchar(11),convert(varchar(2),datename(hh,CreatTime)/3*3)+':00~'+convert(varchar(2),
row_number()over(order by datename(hh,CreatTime)/3)*3-1)+':59')时间段
,COUNT(*)次数,sum(Money)总数from Orders
group by datename(hh,CreatTime)/3

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。