Запрос в базу данных со строкой «trim» - PullRequest
0 голосов
/ 31 августа 2018

Есть ли способ в 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 голосов
/ 31 августа 2018

Вы можете сформулировать это по-другому. Вы хотите, чтобы все строки находились между первым значением, равным или превышающим 1, и последним таким значением.

Предполагая, что у вас есть уникальный идентификатор, который упорядочивает строки, вы можете сделать:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...