Используя Oracle 12c, у меня есть таблица table1
, подобная этой:
ID DATA1 DATA2 LAST_UPDATE_TIMESTAMP
1 1 2 time_stamp1
2 1 2 time_stamp2
3 2 1 time_stamp3
4 2 2 time_stamp4
5 1 2 time_stamp5
6 1 1 time_stamp6
7 2 2 time_stamp7
8 1 1 time_stamp8
9 2 1 time_stamp9
10 1 2 time_stamp10
DATA1
AND DATA2
имеет только четыре возможные пары:
1,1
1,2
2,1
2,2
Как получить идентификаторы каждой пары, если они упорядочены по LAST_UPDATE_TIMESTAMP
, которые являются n-ми последними записями?
Например, если LAST_UPDATE_TIMESTAMP
уже упорядочено в порядке убывания, то для самой последней пары идентификаторы четырех пар будут 1,3,4,6
. Для второго самого последнего это будет 2,7,8,9
.
Решение
Спасибо @kordirko. Это SQL, который я использую
SELECT ID
FROM (
SELECT t.*,
row_number()
over (partition by data1, data2
ORDER BY last_updated_timestamp DESC) as rn
FROM table1 t
)
WHERE rn = n --n means the nth most recent, starts from 1