状态转换 - 花费的时间。- SQL

State transition - time taken.- SQL

在给定一系列值转换的情况下,我试图找出每个状态所花费的总时间。这是一个例子:

输入:

Time State
10:00:00 A
10:00:01 A
10:00:02 B
10:00:03 B
10:00:05 A
10:00:07 B
10:00:08 A
10:00:09 B
10:00:20 A
10:00:21 B

输出:

state time_taken_seconds
A 6
B 15

我无法在 SQL 中使用该功能。非常感谢帮助。

您可以使用分析函数 lead() 来参考下一行的时间。

select state, sum(lap) from (
    select
        time,
        state, 
        lead(time) over(order by time) - time as lap 
    from tablenane
)
group by state