在PostgreSQL中,有没有办法根据规则忽略末尾的行,并且不使用2个子查询就能获得良好的性能?
例如,我想通过忽略列表开头和末尾小于1的值来获取列表中的值:
ROWS: 0, 0.5, 0, 0.2, 0, 0.8, 1, 1.2, 1.3, 1, 0.9, 0, 0.2, 3, 2, 1, 0.9, 0.5, 0, 0.1, 0
SELECT: .......................[1, 1.2, 1.3, 1, 0.9, 0, 0.2, 3, 2, 1]....................
谢谢!!
发布于 2018-08-31 05:43:35
你可以用不同的方式来表达。您希望第一个等于或大于1的值与最后一个这样的值之间的所有行。
假设您有一个对行进行排序的唯一id,您可以这样做:
select t.*
from (select t.*,
min(id) filter (where value >= 1) over () as minid1,
max(id) filter (where value >= 1) over () as maxid1
from t
) t
where id >= minid1 and id <= maxid1;
https://stackoverflow.com/questions/52105664
复制相似问题