sql - SQL 中有没有一种方法可以将所有具有相同 ID 的“开始”到“结束”进程所花费的时间相加?
问题描述
SQL 中有没有一种方法可以计算相同 ID 的所有“开始”到“结束”进程所花费的时间?
id | b | timestamp
11| start | 1563794104895
11| intercepted | 1563794104898
11| end | 1563794104899
11| somethingelse | 1563794104999
11| start | 1563794105895
11| intercepted | 1563794106898
11| end | 1563794107899
12| start | 1563794104895
12| intercepted | 1563794104898
12| end | 1563794104899
解决方案
您可以使用lead()
. 假设这些值正确交错:
select id, sum(next_timestamp - timestamp)
from (select t.*,
lead(timestamp) over (partition by id order by timestamp) as next_timestamp
from t
where b in ('start', 'end')
) t
where b = 'start'
group by id;
推荐阅读
- javascript - 在 onload 事件上加载谷歌地图仍然会在页面加载后给出灯塔消息来加载它
- java - Spring MVC欢迎程序中的Bean配置错误
- java - 在springboot中传递模板时发生错误
- python - 如何从课程模型中修复 ManyToManyDescriptor - 视图?
- swift - Swift DynamicFetchView fetchlimit
- java - Java Servlet NumberFormatException
- html - 使弹性项目平均增长(并扩展父容器)
- java - 按添加时间排序列表
- windows - 批量打开 & 重启 Explorer.exe & 然后恢复所有窗口
- javascript - 当放大触摸设备时,页面放大而不是地图传单