查询超出范围的时间量

时间:2013-05-16 14:14:00

标签: sql time limits aggregates

我有一张桌子记录了坦克的时间和等级。

12:00 | 85

12:01 | 77

12:02 | 78

12:03 | 82

12:05 | 79

12:06 | 75

12:07 | 85

你怎么能写一个查询来获得坦克在一天中低于80的时间? 我正在使用sql server 2008

1 个答案:

答案 0 :(得分:0)

为了做到这一点,下次你需要。某些数据库具有lead()lag()功能。我将使用相关子查询 - 一种更通用的方法。

select sum(endTime - Time)
from (select t.*,
             (select min(time) from t t2 where t2.time > t.time
             ) as endTime
      from t
     ) t
where level < 80;

一个警告:数据库之间的日期和时间函数不同,因此第一种语法不一定有效。例如,在SQL Server中,它可能是:

select sum(datediff(ms, Time, endTime))