у меня есть таблица, как такая
table_id | series_id | revision_id | year
------------------------------------------
1 | 1 | 1 | 2010
2 | 2 | 1 | 2009
3 | 2 | 2 | 2008
4 | 2 | 2 | 2009
5 | 2 | 3 | 2010
6 | 2 | 3 | 2008
7 | 3 | 2 | 2007
8 | 3 | 3 | 2010
9 | 3 | 3 | 2010
Мне нужно найти table_id для максимума (года) при группировке по revision_id, когда ряд = X
в postgresql.
Например: когда x = 2, я ожидаю этого результата
table_id | series_id | revision_id | year
------------------------------------------
2 | 2 | 1 | 2009
4 | 2 | 2 | 2009
5 | 2 | 3 | 2010
это не работает
SELECT * from table
WHERE series_id = 2
AND table_id IN (
SELECT table_id
FROM table
WHERE series_id = 2
GROUP by revision
ORDER BY year DESC
)
Я не могу найти способ сделать это в postgresql, так как мне нужно вернуть поле, которое я не группирую по
Вот некоторые похожие проблемы в других разновидностях SQL.
MySQL
SQL-запрос, выбор 5 самых последних в каждой группе
SQL SERVER
SQL Server - Как выбрать самую последнюю запись для пользователя?