状态转换 - 花费时间。- 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 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。 (