• SQLServer时间分段查询


    统计连续时间段数据

    if OBJECT_ID(N'Test',N'U') is not null
    	drop table Test
    go 
    
    create table Test(
    	pscode decimal(15),
    	outputcode int,
    	monitortime datetime
    )
    
    insert into Test
    select 4100000406,1,convert(datetime,'2015-04-01 00:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 01:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 02:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 03:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 04:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 05:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 06:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 07:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 08:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 09:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 10:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 11:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 13:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 14:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 15:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 16:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 17:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 18:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 19:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 20:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 22:00') union all
    select 4100000406,1,convert(datetime,'2015-04-01 23:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 01:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 02:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 03:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 04:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 05:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 06:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 07:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 08:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 09:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 11:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 12:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 13:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 14:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 15:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 16:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 17:00') union all
    select 4100000405,2,convert(datetime,'2015-04-01 18:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 00:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 01:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 02:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 03:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 04:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 05:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 06:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 07:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 08:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 09:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 11:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 12:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 13:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 14:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 15:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 16:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 17:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 18:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 19:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 20:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 22:00') union all
    select 4100000402,1,convert(datetime,'2015-04-01 23:00')
    
    
    select pscode,outputcode,
    	   convert(varchar(16),MIN(monitortime),120)+'~'+convert(varchar(16),MAX(monitortime),120) fw,
           COUNT(1) num
      from (select x.pscode,x.outputcode,x.monitortime,dateadd(HOUR,-x.orderby,x.monitortime) diff
    		  from (select pscode,outputcode,monitortime,
    					   ROW_NUMBER() over(partition by pscode,outputcode order by pscode,outputcode,monitortime) orderby 
    				  from Test) x)y 
     group by y.pscode,y.outputcode,y.diff

  • 相关阅读:
    【JZOJ4928】【NOIP2017提高组模拟12.18】A
    【JZOJ4922】【NOIP2017提高组模拟12.17】环
    【JZOJ4923】【NOIP2017提高组模拟12.17】巧克力狂欢
    【JZOJ4924】【NOIP2017提高组模拟12.17】向再见说再见
    【JZOJ4919】【NOIP2017提高组模拟12.10】神炎皇
    【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
    【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇
    【罗宾欺诈者】回环符文——回文树(回文自动机)
    【怪物】KMP畸形变种——扩展KMP
    【51NOD1304】字符串的相似度
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6848922.html
Copyright © 2020-2023  润新知