В PostgreSQL У меня есть таблица со следующими значениями:SQL: Найти максимальный кортеж
year | month | val
-----|-------|------
2014 | 1 | x
2014 | 12 | y
2015 | 1 | z
Существует иерархическая связь между годом и месяцем, и я хочу найти Вэла максимального кортежа (год, месяц). Таким образом, в этом примере я хочу вернуть val 'z', так как 2015 - максимальный год, а 1 - максимальный месяц в течение этого года. Это может быть достигнуто с помощью внутреннего запроса:
SELECT val
FROM (
SELECT val, row_number() OVER (ORDER BY YEAR DESC, MONTH DESC) AS r
FROM test
) foo
WHERE r=1
http://sqlfiddle.com/#!15/17fb6/16 См Но есть более простой и аккуратнее способ сделать это?
У вас есть 'UNIQUE' ограничение на' (год, месяц'), если вы не используете 'RANK()' для получения связей ** [demo] (http://sqlfiddle.com/#!15/82557/1/0) ** – lad2025