我有一张桌子,上面记录着坦克的时间和液位。
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
我有一张桌子,上面记录着坦克的时间和液位。
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
为了做到这一点,你需要下一次。一些数据库具有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))