postgresql:如何添加显示两行之间时间差的列

问题描述

我有一些包含 time 列的表格

id  | time
----|-------------------
1   | 2021-2-2 10:21:00
2   | 2021-2-2 10:24:00
3   | 2021-2-2 10:27:00
4   | 2021-2-2 10:29:00

现在我想添加另一列显示时差和另一列将根据差异添加状态

id  | time              | diff  | status
----|----------------------------------
1   | 2021-2-2 10:21:00 | None  | None
2   | 2021-2-2 10:24:00 | 3:00  | 1
3   | 2021-2-2 10:26:00 | 2:00  | 0
4   | 2021-2-2 10:29:00 | 3:00  | 1
status = if diff >= 3 then 1 else 0 

我该怎么做。我必须得到过去 7 天的数据,然后才能得到这张决赛桌。

解决方法

使用LAG

SELECT id,time,EXTRACT(EPOCH FROM time - LAG(time) OVER (ORDER BY time)) / 60 AS diff,(EXTRACT(EPOCH FROM time - LAG(time) OVER (ORDER BY time)) / 60 >= 3)::int AS status
FROM yourTable
ORDER BY time;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...