#mysql #window-functions
Вопрос:
У меня есть таблица событий в MySQL, в которой хранятся события, которые могут завершиться со статусом или success
или failed
.
Я хочу найти первую неудачу из серии последних неудачных событий.
например:
id time status
------------------
1 10:00 success
2 10:01 success
3 10:03 failed
4 10:04 failed
5 10:05 success
6 10:06 success
8 10:07 failed
9 10:07 failed
10 10:07 failed
Мне нужен запрос, который вернет 8 10:07 failed
первый сбой в серии последних неудачных событий
вероятно, нужно использовать функцию окна, в которой я не так хорош.
Кто-нибудь может помочь, пожалуйста?
Большое спасибо.
Ответ №1:
Я уверен, что есть другой способ сделать это, но я часто делаю это с помощью внутреннего запроса и использую минимальную группу.
select
d.*
from data d
inner join (
select
min(id) id,
time
from data
group by time
) l on d.id = l.id
Вот пример этого на практике