Rumah >pangkalan data >tutorial mysql >RANK() lwn. DENSE_RANK() dalam Oracle: Bagaimana Mencari Gaji Ke-N dan Mengendalikan Nilai Null?

RANK() lwn. DENSE_RANK() dalam Oracle: Bagaimana Mencari Gaji Ke-N dan Mengendalikan Nilai Null?

Linda Hamilton
Linda Hamiltonasal
2025-01-25 00:16:12935semak imbas

RANK() vs. DENSE_RANK() in Oracle: How to Find the Nth Salary and Handle Null Values?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn