(待完善)sql--SQL Server--根據日期分組、 根據時間段分組(每三個小時一組)

SQL Server 根據日期分組、 根據時間段分組(每三個小時一組)

所用數據表:

技術分享圖片

一、根據日期分組

  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)
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

技術分享圖片

原文:https://www.cnblogs.com/haosit/p/10766954.html
參考:http://www.bubuko.com/infodetail-3035048.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章