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

Posted

技术标签:

【中文标题】状态转换 - 花费时间。- SQL【英文标题】:State transition - time taken.- SQL 【发布时间】:2021-12-25 08:13:46 【问题描述】:

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

输入:

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 中使用该功能。非常感谢您的帮助。

【问题讨论】:

请标记您正在使用的数据库。 这用于 Presto 查询。 如何计算差异?我看到状态 A 从 10:00:00 开始,到 10:00:20 结束。这应该是20秒吧?将 6 秒作为您的预期输出的原因是什么? @Arun 是在特定状态下花费的时间。如果看到输入表,在状态 A 总共是 6 秒。 【参考方案1】:

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

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

【讨论】:

你能评论一下为什么它在窗口函数中是按时间排序的吗? lead(x) 按时间从下一行中取出 x 值

以上是关于状态转换 - 花费时间。- SQL的主要内容,如果未能解决你的问题,请参考以下文章

sql server:错误 0xc02020a1: 数据流任务 1: 数据转换失败。列“列 0”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。 (

sql 返回日期范围内订单的收入,转换,非眩光和抛光状态

如何根据最大值和最小值将一组 SQL 记录转换为单行?

SQL Server:尝试用大小写转换日期

为啥 dask 的“to_sql”比 pandas 花费更多时间?

将字符串转换为日期时间错误 [重复]