1. 程式人生 > >按每天特定時間作為分界來統計資料的sql語句[sqlserver]

按每天特定時間作為分界來統計資料的sql語句[sqlserver]

欄位:時間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