Самая старая и вторая самая старая запись в таблице? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть простая таблица, в которой есть столбцы user_id и попытка даты / времени. Для любого конкретного user_id существует как минимум одна попытка, но может быть больше попыток (до 6 попыток). Я пытаюсь найти просто две самые старые попытки для каждого пользователя. Как мне это сделать? Я написал ниже, но это ТОЛЬКО находит самую старую попытку дату / время для любого конкретного пользователя. Мне это нужно, но ТАКЖЕ вторая самая старая попытка (если она есть).

SELECT user_id, MIN(attempt_datetime)
FROM table
GROUP by user_id

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Получить 2 последние строки, присоединившись к подзапросу, который извлекает последние две даты:

select
    a.*
from mytable a
join (
    select attempt_datetime
    from mytable
    where user_id = a.user_id
    order by attempt_datetime desc
    limit 2
) b on a.attempt_datetime = b.attempt_datetime
0 голосов
/ 27 апреля 2020

Вы можете использовать оконные функции:

select t.*
from (select t.*, row_number() over (partition by user_id order by attempt_datetime) as seqnum
      from t
     ) t
where seqnum <= 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...