gpt4 book ai didi

sql - 获取上一行值

转载 作者:行者123 更新时间:2023-12-04 14:53:39 24 4
gpt4 key购买 nike

我试图从我的 中获取持续时间PostgreSQL 表,我有一个关于如何做的想法,就是做 提取从时差。但我做对了。这是我拥有的一个表格示例。


ID
姓名
状态_来自
状态_至
Change_Time


1
安德鲁
准备好
休息
2021-04-28 04:46:34

2
安德鲁
休息
session
2021-07-30 10:50:04

3
安德鲁
session
查看
2021-07-30 10:50:06

4
纳扎尔
查看
准备好
2021-07-30 10:54:09

5
纳扎尔
准备好
session
2021-07-30 11:03:09

6
安德鲁
查看
准备好
2021-07-30 11:10:09


这是我想要获得的输出示例


ID
姓名
状态_来自
状态_至
Change_Time
期间


1
安德鲁
空值
准备好
2021-07-30 10:29:04
NULL(或 0)

2
安德鲁
准备好
session
2021-07-30 10:50:04
1260

3
安德鲁
session
查看
2021-07-30 10:50:06
2

4
纳扎尔
空值
准备好
2021-07-30 10:54:09
NULL(或 0)

5
纳扎尔
准备好
session
2021-07-30 11:03:09
540

6
安德鲁
查看
准备好
2021-07-30 11:10:09
1203


持续时间是的时间Status_to 成为 status_from 对于相同的 姓名
关于我该怎么做的任何建议?因为我没有想法,提前谢谢你!

最佳答案

您可以使用 lag()然后“纪元”算术得到以秒为单位的差异:

select t.*,
(extract(epoch from changetime) -
extract(epoch from lag(changetime) over (partition by name order by changetime)
) as duration_seconds
from t;

关于sql - 获取上一行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68590761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com