У меня вопрос с использованием функции lead()
при определенных условиях.
Допустим, у меня есть следующая таблица:
----------------------------------
id | time | condition |
1 | 12:00:00 | fail |
2 | 12:10:00 | fail |
3 | 12:15:00 | success |
4 | 12:20:00 | success |
Я хочу иметь таблицу, содержащую столбец, который сообщает мне, когда наступит следующий успех, и исключаю все ошибочные записи между,Итак, как и
---------------------------------------------------
id | time | condition | next_success |
1 | 12:00:00 | fail | 12:15:00 |
3 | 12:15:00 | success | 12:20:00 |
4 | 12:20:00 | success | null |
Я знаю, что, возможно, я могу поиграть с функцией lead()
, но самое близкое, что я видел, это
select *, lead(time, 1) over (partition by condition order by time) as next_time from table
Это не совсем то, что я хочу,потому что я не просто хочу сгруппировать их по неудаче или успеху, я хочу, чтобы каждая запись сопровождалась временем следующего успеха
Надеюсь, кто-то может дать некоторые идеи о том, как решить эту проблему!
Спасибо