Oracle SQL: Mengekstrak 5 Nilai Tertinggi Teratas
Banyak tugas pangkalan data memerlukan mendapatkan semula bilangan baris tertentu berdasarkan nilai tertinggi atau terendah lajur. Ini amat membantu untuk mengenal pasti prestasi terbaik atau membuat laporan. Artikel ini menunjukkan beberapa kaedah Oracle SQL untuk mendapatkan semula 5 nilai teratas daripada lajur.
Menggunakan Fungsi Analitik: RANK()
dan DENSE_RANK()
Fungsi analitik menawarkan kedudukan baris yang cekap. RANK()
memberikan kedudukan unik berdasarkan kriteria yang ditentukan, manakala DENSE_RANK()
menyediakan fungsi yang serupa tetapi menghapuskan jurang dalam kedudukan untuk seri.
Untuk mendapatkan 5 gaji teratas daripada lajur "sal" jadual "emp" menggunakan RANK()
:
<code class="language-sql">SELECT * FROM ( SELECT empno, sal, RANK() OVER (ORDER BY sal DESC) AS rnk FROM emp ) WHERE rnk <= 5;</code>
Memanfaatkan ROW_NUMBER()
Fungsi ROW_NUMBER()
memberikan nombor jujukan kepada setiap baris, tanpa mengira pesanan. Ini boleh mengehadkan hasil kepada kiraan baris tertentu.
Berikut ialah cara mendapatkan 5 gaji teratas menggunakan ROW_NUMBER()
:
<code class="language-sql">SELECT * FROM ( SELECT empno, sal, ROW_NUMBER() OVER (ORDER BY sal DESC) AS rnk FROM emp ) WHERE rnk <= 5;</code>
Pendekatan Alternatif: ROWNUM
Pseudocolumn
Pseudocolumn ROWNUM
menyediakan nombor baris fizikal dalam hasil pertanyaan. Walau bagaimanapun, penggunaannya untuk mengehadkan keputusan secara amnya tidak digalakkan kerana kemungkinan ketidakkonsistenan.
Contoh menggunakan ROWNUM
:
<code class="language-sql">SELECT * FROM ( SELECT empno, sal FROM emp ORDER BY sal DESC ) WHERE ROWNUM <= 5;</code>
Memilih Kaedah yang Betul
Pendekatan terbaik bergantung pada keperluan khusus dan ciri data.
RANK()
dan DENSE_RANK()
mengekalkan susunan kedudukan, walaupun dengan seri.ROW_NUMBER()
menjamin bilangan baris tertentu tetapi boleh memotong hasil terikat sewenang-wenangnya.ROWNUM
kurang dipercayai dan harus digunakan dengan berhati-hati.Pertimbangan yang teliti terhadap kaedah ini adalah penting untuk mendapatkan semula data yang tepat dan konsisten dalam Oracle SQL.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 5 Nilai Lajur Teratas dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!