找到最长的时间间隔

时间:2016-10-28 17:50:11

标签: sql sql-server

我在SQL Server中运行一个SQL查询,它会返回一个列表。例如

00:01:45
00:01:55
00:02:25
00:05:33
00:10:45
00:11:01
00:13:45

我想了解SQL如何返回一个表示上述时间之间最长持续时间的单个时间(这是查询的输出)。是否可以通过SQL执行此操作,如果可以,如何执行此操作?

1 个答案:

答案 0 :(得分:3)

您可以使用分析函数LAGLEAD来执行此操作。通过对前一行或下一行执行DATEDIFF计算(按时间排序),我们可以确定每个有序对之间的持续时间。剩下要做的唯一事情是MAX

with Data as (
         select a.TheTime
              , DateDiff(minute, Lag(a.TheTime, 1, a.TheTime) over(order by a.TheTime asc), a.TheTime) as Duration
         from (values
             (Convert(time(0), N'00:01:45'))
           , (Convert(time(0), N'00:01:55'))
           , (Convert(time(0), N'00:02:25'))
           , (Convert(time(0), N'00:05:33'))
           , (Convert(time(0), N'00:10:45'))
           , (Convert(time(0), N'00:11:01'))
           , (Convert(time(0), N'00:13:45'))
         ) as a (TheTime)
     )
select Max(a.Duration) as MaxDuration
from Data as a;