Selecione até a linha corresponder no postgresql?

Existe uma maneira de selecionar linhas até que alguma condição seja atendida? I.e. um tipo delimit, Mas não limitado aN linhas, mas para todas as linhas até a primeira linha não correspondente?

Por exemplo, digamos que eu tenho a tabela:

CREATE TABLE t (id SERIAL PRIMARY KEY, rank INTEGER, value INTEGER);
INSERT INTO t (rank, value) VALUES  ( 1, 1), (2, 1), (2,2),(3,1);

isso é:

test=# SELECT * FROM t;
 id | rank | value
----+------+-------
  1 |    1 |     1
  2 |    2 |     1
  3 |    2 |     2
  4 |    3 |     1
(4 rows)

Desejo ordenar por classificação e selecionar até a primeira linha acima de 1.

I.e.SELECT * FROM t ORDER BY rank UNTIL value>1

e eu quero as 2 primeiras linhas de volta?

Uma solução é usar uma subconsulta ebool_or:

SELECT * FROM
( SELECT id, rank, value, bool_and(value<2) OVER (order by rank, id) AS ok FROM t ORDER BY rank) t2
WHERE ok=true

Mas isso não acabará passando por todas as linhas, mesmo que eu queira apenas um punhado?

(contexto do mundo real: tenho eventos com registro de data e hora em uma tabela, posso usar um lead / atraso de consulta na janela para selecionar o tempo entre dois eventos, desejo todos os eventos denow voltando desde que tenham acontecido com menos de 10 minutos de diferença - olead/lag consulta de janela complica as coisas, exemplo tão simplificado aqui)

editar: ordenar a função de janela porrank, id

questionAnswers(3)

yourAnswerToTheQuestion