我在起草SQL时遇到了问题。数据结构非常简单。ID是用户的索引。事件代表现在正在发生的事情。时间戳记录了该事件在MS中发生的时间。
数据如下所示:
| 标识符|事件|计时器|
| - -|- -|- -|
| 一个|A级|10个|
| 一个|B|十一|
| 一个|A级|十三个|
| 一个|C类|十五个|
我想看看如何计算事件A和下一个事件之间的时间差或持续时间。下一个事件可以是任何东西,它不会再是A。
例如,对于ID 1,我们有2个事件,time.A - time.B = 11-10,以及time.C - time.A = 15-13,因此结果如下所示:
| 标识符|持续时间|
| - -|- -|
| 一个|一个|
| 一个|2个|
我不太清楚如何起草这个SQL。请随意分享任何想法。
提前感谢您的帮助。
1条答案
按热度按时间wz3gfoph1#
这是
lead()
的一个典型用例,它允许您访问排序分区中的“下一”行:当没有“下一个”数据列时,
lead()
会传回null
,并传播至duration
。如果你想过滤一个给定的
event
,你需要在一个外部查询中进行(否则在我们计算持续时间之前,行将被过滤掉),所以: