Oracle
 sql >> база данни >  >> RDS >> Oracle

как да изберете най-често появяващите се стойности?

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

Използвайте аналитичната функция rank . Той ще присвои номериране въз основа на реда на count(*) desc . Ако две имена имат еднакъв брой, те получават еднакъв ранг и следващото число се пропуска (така че може да получите редове с ранг 1, 1 и 3). dense_rank е алтернатива, която не пропуска следващото число, ако два реда имат еднакъв ранг (така че ще получите 1, 1, 2), но ако искате само редовете с ранг 1, няма голяма разлика .

Ако искате само един ред, бихте искали всеки ред да има различен номер. В такъв случай използвайте row_number . Освен тази малка, но важна разлика, тези функции са подобни и могат да се използват по един и същи начин.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте част от SQL във функция на Oracle

  2. Как да получите израз за създаване на таблица на Oracle в SQL*Plus

  3. Вземете името на извикващата процедура или функция в Oracle PL/SQL

  4. java.sql.SQLException:- ORA-01000:максималният отворен курсор е превишен

  5. PLS-00103 Открит символ> грешка при изпълнение на съхранена процедура