Rumah >pangkalan data >tutorial mysql >Apakah perbezaan antara pangkat () dan padat_rank () di Oracle SQL?
Artikel ini menjelaskan perbezaan utama antara fungsi
dan dalam Oracle SQL, yang memberi tumpuan kepada tingkah laku kedudukan mereka, terutamanya apabila berurusan dengan hubungan dan nilai null.
RANK()
DENSE_RANK()
Perbezaan utama:
Kedua -dua fungsi memberikan pangkat ke baris dalam dataset berdasarkan pesanan yang ditentukan. Perbezaan penting terletak pada pengendalian hubungan mereka:
RANK()
DENSE_RANK()
Untuk mengambil gaji tertinggi nth dari jadual menggunakan
, anda boleh menggunakan pertanyaan yang serupa dengan ini (walaupun kaedah yang lebih efisien wujud):
emptbl
RANK()
Gaji ini dalam urutan menurun dan penapis untuk baris dengan pangkat yang dikehendaki.
<code class="language-sql">SELECT empname FROM (SELECT empname, RANK() OVER (ORDER BY sal DESC) as sal_rank FROM emptbl) WHERE sal_rank = n;</code>
pengendalian nilai null:
Rawatan nilai null bergantung kepada klausa . Jika nulls diperintahkan terlebih dahulu (
), mereka akan menerima pangkat terendah. Jika diperintahkan terakhir (), mereka akan menerima pangkat tertinggi. ORDER BY
ORDER BY sal NULLS FIRST
ORDER BY sal NULLS LAST
Contoh ilustrasi:
mari kita periksa ini dengan data sampel:
pertanyaan:
<code>DEPTNO EMPNAME SAL ------------------------------ 10 rrr 10000.00 11 nnn 20000.00 11 mmm 5000.00 12 kkk 30000.00 10 fff 40000.00 10 ddd 40000.00 10 bbb 50000.00 10 ccc 50000.00</code>
menghasilkan hasil yang jelas menunjukkan perbezaan:
Menunjukkan pangkat Skipping, manakala<code class="language-sql">SELECT empname, deptno, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) as rnk, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) as drnk_first, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS LAST) as drnk_last FROM emptbl;</code>dan
menunjukkan kedudukan berturut -turut dengan nulls dikendalikan secara berbeza. Jadual output secara visual mewakili tingkah laku ranking yang berbeza. (Nota: Contohnya menganggap jadual bernama rnk
ada dengan data yang disediakan; ganti dengan nama jadual sebenar anda.) drnk_first
Atas ialah kandungan terperinci Apakah perbezaan antara pangkat () dan padat_rank () di Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!