如何提取具有相同id的多行的特定列的差异?
示例表:
| 标识符|上一个瓦尔|新瓦尔|日期|
| - -|- -|- -|- -|
| 一个|第0页|一个|2020年1月1日10时|
| 一个|一个|2个|2020年1月1日11时|
| 2个|第0页|一个|2020年1月1日10时|
| 2个|一个|2个|2020年1月2日10时|
预期结果:
| 标识符|持续时间(小时)|
| - -|- -|
| 一个|一个|
| 2个|二十四|
摘要:id=1,(2020-01-01 10:00 - 2020-01-01 11:00)为1小时;
id=2,(2020年1月1日10:00 - 2020年1月2日10:00)为24小时制
我们能否通过SQL实现这一点?
4条答案
按热度按时间vx6bjr1n1#
这种解决方案将是一种有效的方法
xwbd5t1u2#
如果你需要连续读数之间的差异,类似这样的东西应该会起作用
p4tfgftt3#
您可以使用最小/最大子查询。例如:
如果您在将工期转换为小时数时需要帮助,请告诉我。
pftdvrlh4#
你可以使用lead()/lag()window functions来访问下一行/上一行的数据。你可以进一步subtract timestamps来给予一个interval并提取所需的部分。
注意事项:
所显示的预期结果不正确。结果分别为-1和-24。
DATE是一个非常糟糕的列名选择。它既是Postgres数据类型(最多导致混淆),又是SQL标准保留字。