在数据库中用“ trim”行查询

时间:2018-08-30 21:34:36

标签: sql database postgresql

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]....................

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用不同的措辞。您希望第一个值等于或大于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;