Результат, который возвращает несколько групп на основе идентификатора и даты

У меня есть простая таблица под названием "сообщение", состоящая из столбца "id" и столбца "date". Может быть несколько идентификаторов с одинаковым значением. Я ищу запрос, который возвращает до трех каждого идентификатора, и из этих трех они должны быть самыми большими с датами.

Таким образом, запрос будет производить что-то вроде этого:

id | date
--- -------------------
36  2011-04-01 08:41:19
36  2011-04-17 08:05:18
36  2011-04-17 18:48:49
39  2011-03-31 05:45:15
39  2011-03-31 05:50:07
39  2011-03-31 05:56:23
41  2011-04-11 07:02:27
41  2011-04-19 02:31:31
41  2011-04-19 02:32:53
etc...

У меня были проблемы с выяснением этого.

1 ответ

Решение
select * from table as t1
where (select count(*) from table as t2
       where t1.id = t2.id and t2.date > t1.date) < 3
order by id, date desc
Другие вопросы по тегам