Anda dapat mendekati ini menggunakan row_number()
:
select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
from table_name t
) t
where seqnum = 1;
Apakah Anda menganggap ini lebih "elegan" mungkin adalah masalah selera.
Saya harus menunjukkan bahwa ini agak berbeda dari permintaan Anda. Ini dijamin untuk mengembalikan satu baris untuk setiap key
; milik Anda dapat mengembalikan beberapa baris. Jika Anda menginginkan perilaku itu, cukup gunakan rank()
atau dense_rank()
bukannya row_number()
.