В отношении следующих сообщений:
Получение последней записи в каждой группе - MySQL
Сгруппированный LIMIT в PostgreSQL: показать первые N строкдля каждой группы?
Ограничение Postgresql по N группам
Я написал запрос, чтобы найти последние 3 записи из последних 3 групп событий журнала, разделенныхдень с максимум 9 записями, и мне удалось собрать следующие данные из таблицы журнала postgresql:
Запрос, который я использовал для их полученияявляется следующим:
SELECT
*
FROM (
SELECT
ROW_NUMBER() OVER (PARTITION BY created_at::date ORDER BY created_at::time DESC) AS row_number,
DENSE_RANK() OVER (ORDER BY created_at::date DESC) AS group_number,
l.*
FROM
logs l
WHERE
account_id = 1) subquery
WHERE
subquery.row_number <= 3
AND group_number <= 3
LIMIT 9;
Однако я пропускаю один последний шаг: результаты «группируются» по дням в порядке убывания (что хорошо), но в каждой группе порядоккажется, что время не работает.
Фактически ожидаемый порядок должен быть таким (при отображении только каждой строки id
):
| EXISTING ROW ORDERING | EXPECTED ROW ORDERING |
| --------------------- | --------------------- |
52 56
53 53
56 52
46 48
48 47
47 46
30 30
31 31
32 32
Есть идеи? Спасибо.