sql - 如何比较同一表列中的值并在相等时返回

标签 sql postgresql

我有以下数据SQL Example

每当 cs3Horizo​​ntal 行 = 同一列但下一行时,我需要提取并返回数据行。例如,在图片中,您看到第 85/86 行的 cs3Horizo​​ntal = 65,因此返回这些行。

我已经研究过许多使用 OVER、LEAD 和 LAG 的选项,但老实说,文档只是没有为以前从未使用过这些窗口函数的人提供足够的详细信息。我认为我正在寻找正确的解决方案,但我该如何实现呢?

我使用的是 PostgreSQL 9.2.9,由 Visual C++ build 1600 编译,64 位。所讨论的表是时间序列数据,因此第一列是主键。

最佳答案

LEAD()LAG() 是解决方案。如果你想要两行:

select t.*
from (select t.*,
             lag(cs3Horizontal) over (order by cs3time) as prev_cs3Horizontal,
             lead(cs3Horizontal) over (order by cs3time) as next_cs3Horizontal
      from t
     ) t
where prev_cs3Horizontal = cs3Horizontal or
      next_cs3Horizontal = cs3Horizontal;

关于sql - 如何比较同一表列中的值并在相等时返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623848/

相关文章:

mysql - 根据汇总结果选择

sql - Access/SQL Server 2008 使用 Like 加入不起作用

mysql - 如何自动更新多行并选择它们?

postgresql - 无法从 pgadmin 连接到 postgres 数据库(都在 docker 上运行)?

mysql更新列然后选择更新的值

mysql - 查找连续行数设置为零的行。 (MySQL)

database - 如何在 Postgresql 中创建返回动态列名的查询?

Python re.findall 正则表达式和文本处理

ruby - ObjectMapper : Find geo places within a certain square, 按邻近度排序

sql - PostgreSQL 相当于 SQL Server NVARCHAR (MAX)