sql >> Database teknologi >  >> RDS >> Oracle

hvordan vælger man de hyppigst forekommende værdier?

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.



  1. JSON_MERGE_PRESERVE() – Flet flere JSON-dokumenter i MySQL

  2. Hvilken database fungerer godt med 200+GB data?

  3. Rekursiv SQL giver ORA-01790

  4. linux mysql-server kan ikke finde mysql_config