字段:时间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