求一SQL语句,请高手指点,谢谢!
我有一张用户表,里面有UserID和用户访问公司网站的时间Createtime,同一个UserID可以对应多个Createtime,现在要想得到不风同用户的访问网站时间总和,即循环下一个时间减去前一个时间,得到总和,如果下一个时间减去前一个时间差大于20,则赋值为1,如果用户只访问了一次,也赋值为1.谢谢!
------解决方案--------------------LZ最好给出测试环境,并把你要的结果贴出来,大家才能更懂你的意思
------解决方案--------------------select userid,case when sum(col)=0 then 1 else sum(col) end from  
 ( 
 select userid,col=case when datediff(minute,createtime,isnull((select top 1 createtime from t_User b where a.userid=b.userid and a.createtime <b.createtime order by createtime),createtime))> =20 then 1 else 0 end  
 from t_User a 
 )c 
 group by userid
------解决方案--------------------解释一下    4 的 361怎么来的?
------解决方案--------------------不明白第3个为什么是1
------解决方案--------------------lz 求的是分钟还是秒啊, 1    的结果为 7 ,我怎么感觉算的是秒啊? 
------解决方案--------------------  这个是按照秒算的 
 select a.UserID, 
  (case when  sum(datediff(s,a.createtime ,b.createtime)) is null then 1  
   when  sum(datediff(s,a.createtime ,b.createtime))> 20 then 1 else  sum(datediff(s,a.createtime ,b.createtime)) end ) as CreateTime 
 from t_User a  left outer join t_User b  
 on a.id+1=b.id and a.userid=b.userid 
 group by a.userid   
 --result  
 UserID   CreateTime 
 1        7 
 2        1 
 3        1 
 4        1   
 如果要求分钟的话 把datediff(s,a.createtime ,b.createtime) 改成  
 datediff(mi,a.createtime ,b.createtime) 
------解决方案--------------------4的秒数应该为多少?
------解决方案--------------------我来解释一下,4的秒数是302  
 求同一id相邻(不考虑其它id)的时间间隔之和, 
 如果间隔超过20分钟,认为间隔时间为1秒,若只有一条记录也为1秒 
------解决方案--------------------select a.UserID, 
  isnull(sum(case   when  datediff(s,a.createtime ,b.createtime)> 1200     then 1 else  datediff(s,a.createtime ,b.createtime) end ),1) 
  as CreateTime 
 from t_User a  left outer join t_User b  
 on a.id+1=b.id and a.userid=b.userid 
 group by a.userid 
 --result 
 1        7 
 2        1 
 3        1 
 4        302