Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

bagaimana cara memilih nilai yang paling sering muncul?

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.



  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 Query menggunakan dua tanggal

  2. Bagaimana cara terhubung ke Oracle 10g dari klien jarak jauh?

  3. Hindari masalah dengan BigDecimal saat bermigrasi ke Java 1.4 ke Java 1.5+

  4. Perl DBD::Instalasi Modul Oracle

  5. Nama kolom berulang dalam hasil kueri