#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. вы правы, но я понял, что мой вопрос плох. На самом деле мне не нужно значение, мне нужна длительность между первым значением, превышающим пороговое значение, и первым значением в группе. Извините за путаницу.