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
Brug den analytiske funktion rank
. Den vil tildele en nummerering baseret på rækkefølgen af count(*) desc
. Hvis to navne har samme antal, får de samme rang, og det næste tal springes over (så du kan få rækker med rang 1, 1 og 3). dense_rank
er et alternativ, som ikke springer det næste tal over, hvis to rækker har samme rang, (så du får 1, 1, 2), men hvis du kun vil have rækkerne med rang 1, er der ikke den store forskel .
Hvis du kun vil have én række, vil du gerne have, at hver række har et andet nummer. I så fald skal du bruge row_number
. Bortset fra denne lille, men vigtige forskel, ligner disse funktioner hinanden og kan bruges på samme måde.