Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak wybrać najczęściej pojawiające się wartości?

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

Użyj funkcji analitycznej rank . Przypisze numerację na podstawie kolejności count(*) desc . Jeśli dwa nazwiska mają taką samą liczbę, otrzymują tę samą rangę, a następna liczba jest pomijana (więc możesz otrzymać wiersze o randze 1, 1 i 3). dense_rank jest alternatywą, która nie pomija następnej liczby, jeśli dwa wiersze mają tę samą rangę (więc otrzymasz 1, 1, 2), ale jeśli chcesz tylko wiersze z pozycją 1, nie ma dużej różnicy .

Jeśli chcesz mieć tylko jeden wiersz, chciałbyś, aby każdy wiersz miał inny numer. W takim przypadku użyj row_number . Oprócz tej małej, ale ważnej różnicy, te funkcje są podobne i mogą być używane w ten sam sposób.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dzielenie wartości oddzielonych przecinkami w Oracle

  2. Podstawianie zmiennej zapytania Golang SQL

  3. Oracle używa dynamicznego sql, gdy parametrem jest nazwa tabeli

  4. Łączenie i usuwanie produktów kartezjańskich

  5. Odkryj typy pakietów PL/SQL, korzystając z widoków słownika Oracle