Выберите первое значение, превышающее пороговое значение или максимальное в группе

#postgresql

Вопрос:

У меня есть данные, которые выглядят примерно так:

время ценность копировать
1 0.1 1
2 0.812 1
3 0.9 1
1 0.2 2
2 0.3 2
3 0.4 2

И я хочу найти продолжительность, когда значения впервые пересекают пороговое значение, и первое значение, в данном случае, скажем, 0,8 для каждой группы репликации. Однако, если у группы нет значения, превышающего пороговое значение, просто верните максимальное значение.

Желаемый результат был бы:

Продолжительность копировать
1 1
2 2

Возможно ли это вообще сделать в одном запросе в Postgres?

Ответ №1:

Что-то вроде:

 select time, max(value)
from ...
where value > 0.8
group by replicate,time

union

select time, max(value)
from ...
where value < 0.8
group by replicate, time
 

Комментарии:

1. вы правы, но я понял, что мой вопрос плох. На самом деле мне не нужно значение, мне нужна длительность между первым значением, превышающим пороговое значение, и первым значением в группе. Извините за путаницу.