按每天特定時間作為分界來統計資料的sql語句[sqlserver]
阿新 • • 發佈:2019-02-10
欄位:時間dt , 數量 num
要求: 求每天以8:30分為界統計每天數量的和
sql
select CONVERT(char(10),dateadd(minute,-510,dt),120),SUM(num) from table group by
CONVERT(char(10),dateadd(minute,-510,dt),120);
dateadd(minute,-510,dt)為把時間前移510分鐘,即8小時30分
思路:不改變資料的前提下,把時間點減去時間差,將起始時間移到0點作為新偽列,即可以新偽列像平常一樣按天分組;
時間 數量 新時間
2017-7-5 8:30:00 30 2017-7-5 0:00:00
2017-7-5 16:00:00 26 2017-7-5 7:30:00
2017-7-6 5:31:02 77 2017-7-5 9:01:02
上圖看出,3條資料都是在2017-7-5 8:30:00至2017-7-6 8:29:29之間,即算作2017-7-5同一天的資料,時間偏移後,新時間更直觀地看出3條資料為2017-7-5的資料,新時間並不是真實時間,而是代表資料所屬的時間區間,只需要把時分秒去掉即可
相當於
時間 數量
新時間
2017-7-5 8:30:00 30 2017-7-5
2017-7-5 16:00:00 26 2017-7-5
2017-7-6 5:31:02 77 2017-7-5
執行上面SQL語句得出
2017-7-5 133
要求: 求每天以8:30分為界統計每天數量的和
sql
select CONVERT(char(10),dateadd(minute,-510,dt),120),SUM(num) from table group by
CONVERT(char(10),dateadd(minute,-510,dt),120);
dateadd(minute,-510,dt)為把時間前移510分鐘,即8小時30分
思路:不改變資料的前提下,把時間點減去時間差,將起始時間移到0點作為新偽列,即可以新偽列像平常一樣按天分組;
時間 數量 新時間
2017-7-5 8:30:00 30 2017-7-5 0:00:00
2017-7-5 16:00:00 26 2017-7-5 7:30:00
2017-7-6 5:31:02 77 2017-7-5 9:01:02
上圖看出,3條資料都是在2017-7-5 8:30:00至2017-7-6 8:29:29之間,即算作2017-7-5同一天的資料,時間偏移後,新時間更直觀地看出3條資料為2017-7-5的資料,新時間並不是真實時間,而是代表資料所屬的時間區間,只需要把時分秒去掉即可
相當於
2017-7-5 8:30:00 30 2017-7-5
2017-7-5 16:00:00 26 2017-7-5
2017-7-6 5:31:02 77 2017-7-5
執行上面SQL語句得出
2017-7-5 133