Rumah >pangkalan data >tutorial mysql >RANK() lwn. DENSE_RANK() dalam Oracle: Bagaimana Mencari Gaji Ke-N dan Mengendalikan Nilai Null?
PERINGKAT() Oracle dan DENSE_RANK(): Mencari Gaji Tertinggi Ke-N
Artikel ini meneroka perbezaan antara fungsi RANK()
dan DENSE_RANK()
Oracle, menunjukkan penggunaannya dalam mengenal pasti gaji ke-n tertinggi dan mengendalikan potensi nilai nol.
Pemahaman RANK()
dan DENSE_RANK()
Kedua-dua fungsi menetapkan kedudukan dalam set data tersusun (partition). Perbezaan utama terletak pada pengendalian hubungan mereka:
RANK()
: Berikan kedudukan yang sama kepada nilai terikat, meninggalkan jurang dalam urutan kedudukan. Jika tiga pekerja berkongsi pangkat kedua, pangkat seterusnya ialah 5.
DENSE_RANK()
: Juga memberikan kedudukan yang sama kepada nilai terikat, tetapi tanpa jurang. Jika tiga pekerja berkongsi pangkat kedua, pangkat seterusnya ialah 3.
Mengambil Gaji Tertinggi Ke-N
Pertanyaan berikut menggunakan RANK()
untuk mencari gaji ke-n tertinggi:
<code class="language-sql">SELECT * FROM ( SELECT emp.*, RANK() OVER (ORDER BY sal DESC) as salary_rank FROM emptbl emp ) ranked_salaries WHERE salary_rank = n;</code>
Ganti n
dengan pangkat yang diingini (cth., 3 untuk gaji ketiga tertinggi). Perhatikan klausa ORDER BY sal DESC
, penting untuk kedudukan tertib menurun.
Pertimbangan Nilai Nol
Layanan nilai NULL
bergantung pada klausa ORDER BY
:
ORDER BY sal NULLS FIRST
: NULL
gaji diletakkan di tempat pertama.
ORDER BY sal NULLS LAST
: NULL
gaji diletakkan pada kedudukan terakhir.
Contoh: Pertimbangkan jadual dengan NULL
gaji. Menggunakan NULLS LAST
, pertanyaan untuk tiga gaji teratas akan mengecualikan pekerja dengan NULL
gaji daripada tiga teratas. Sebaliknya, NULLS FIRST
akan memasukkan mereka, berpotensi meletakkan mereka di bahagian atas kedudukan.
Untuk panduan komprehensif dan contoh lanjut, sila rujuk sumber ini: Penjelasan dan Contoh Terperinci
Atas ialah kandungan terperinci RANK() lwn. DENSE_RANK() dalam Oracle: Bagaimana Mencari Gaji Ke-N dan Mengendalikan Nilai Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!