select
x.last_name,
x.name_count
from
(select
u.last_name,
count(*) as name_count,
rank() over (order by count(*) desc) as rank
from
users u
group by
u.last_name) x
where
x.rank = 1
Gunakan fungsi analitik rank
. Ini akan menetapkan penomoran berdasarkan urutan count(*) desc
. Jika dua nama mendapat jumlah yang sama, mereka mendapatkan peringkat yang sama, dan nomor berikutnya dilewati (jadi Anda mungkin mendapatkan baris yang memiliki peringkat 1, 1 dan 3). dense_rank
adalah alternatif yang tidak melewatkan nomor berikutnya jika dua baris mendapat peringkat yang sama, (jadi Anda akan mendapatkan 1, 1, 2), tetapi jika Anda hanya menginginkan baris dengan peringkat 1, tidak ada banyak perbedaan .
Jika Anda hanya menginginkan satu baris, Anda ingin setiap baris memiliki nomor yang berbeda. Dalam hal ini, gunakan row_number
. Terlepas dari perbedaan kecil tapi penting ini, fungsi-fungsi ini serupa dan dapat digunakan dengan cara yang sama.