Sql 带条件的查询过滤

Sql 带条件的查询过滤,sql,postgresql,Sql,Postgresql,如何在Postgresql 9.2.24中执行SQL查询,该查询仅在最后一种情况为1时过滤并显示行。在示例中,显示行A、E、F。主键为所有列 Letter | Situation | Seq ------------------------ A | 1 | 1 B | 1 | 1 B | 7 | 2 C | 1 | 1 C | 3 | 2 D | 1

如何在Postgresql 9.2.24中执行SQL查询,该查询仅在最后一种情况为1时过滤并显示行。在示例中,显示行A、E、F。主键为所有列

Letter | Situation | Seq 
------------------------
A      | 1         | 1
B      | 1         | 1
B      | 7         | 2
C      | 1         | 1
C      | 3         | 2
D      | 1         | 1
D      | 7         | 2
E      | 1         | 1
F      | 1         | 1
F      | 7         | 2
F      | 1         | 3
如果希望行使用降序排序的
first\u value()

select t.*
from (select t.*,
             first_value(situation) over (partition by letter order by seq desc) as last_situation
      from t 
     ) t
where last_situation = 1;
如果您只需要字母,那么一个简单的解决方案是
分组方式

select letter
from t
group by letter
having max(seq) = max(case when situation = 1 then seq end);
这很简单,因为它不使用子查询


与您的问题无关,但是:Postgres 9.2是您应该尽快计划升级。