Efek yang sama dapat direplikasi di Oracle baik dengan menggunakan first_value() fungsi atau dengan menggunakan salah satu rank() atau row_number() fungsi.
Kedua varian juga berfungsi di Postgres.
first_value()
select distinct col1,
first_value(col2) over (partition by col1 order by col2 asc)
from tmp
first_value memberikan nilai pertama untuk partisi, tetapi mengulanginya untuk setiap baris, sehingga perlu digunakan dalam kombinasi dengan distinct untuk mendapatkan satu baris untuk setiap partisi.
row_number() / rank()
select col1, col2 from (
select col1, col2,
row_number() over (partition by col1 order by col2 asc) as rownumber
from tmp
) foo
where rownumber = 1
Mengganti row_number() dengan rank() dalam contoh ini menghasilkan hasil yang sama.
Fitur varian ini adalah dapat digunakan untuk mengambil N pertama baris untuk partisi tertentu (mis. "3 terakhir diperbarui") cukup dengan mengubah rownumber = 1 ke rownumber <= N .