Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai N Tertinggi dalam Oracle SQL?
Mengekstrak N Teratas Nilai Tertinggi dalam Oracle SQL
Cabaran: Bagaimana untuk memilih bilangan baris tertentu dengan cekap yang mengandungi nilai tertinggi daripada lajur tertentu dalam pertanyaan Oracle SQL?
Penyelesaian:
Pendekatan optimum menggunakan fungsi analitik Oracle, khususnya RANK()
atau DENSE_RANK()
:
Menggunakan Fungsi RANK()
:
<code class="language-sql">select * from ( select empno, sal, rank() over (order by sal desc) as rnk from emp ) where rnk <= 5;</code>
Pertanyaan ini mendapatkan semula 5 gaji tertinggi teratas, bersama-sama dengan nombor pekerja yang sepadan.
Menggunakan Fungsi DENSE_RANK()
:
<code class="language-sql">select * from ( select empno, sal, dense_rank() over (order by sal desc) as rnk from emp ) where rnk <= 5;</code>
DENSE_RANK()
menawarkan kelebihan berbanding RANK()
dengan menghapuskan jurang dalam kedudukan apabila berbilang baris berkongsi nilai yang sama.
Pertimbangan Penting:
ROW_NUMBER()
juga boleh mencapai ini, RANK()
atau DENSE_RANK()
biasanya lebih disukai untuk memilih nilai N teratas kerana ia mengendalikan hubungan dengan lebih anggun.ROWNUM
pseudocolumn sebagai penyelesaian kendiri. Penggunaannya sebelum klausa ORDER BY
boleh membawa kepada keputusan yang tidak tepat.Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai N Tertinggi dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!