Gunakan fungsi analitik SQL untuk mencari gaji kedua tertinggi
Bagaimana untuk mendapatkan gaji kedua tertinggi dengan mudah daripada jadual pangkalan data pekerja?
Jawapan:
Fungsi analitik Oracle menyediakan penyelesaian untuk tugas ini. Pertanyaan SQL berikut menggunakan fungsi ini untuk mengenal pasti gaji kedua tertinggi:
<code class="language-sql">SELECT * FROM ( SELECT sal, DENSE_RANK() OVER (ORDER BY sal DESC) AS rnk FROM ( SELECT DISTINCT sal FROM emp ) ) WHERE rnk = 2</code>
Pertanyaan ini menggunakan fungsi DENSE_RANK() untuk menetapkan kedudukan berturut-turut kepada gaji dalam susunan menurun. Klausa WHERE kemudian menapis keputusan untuk mendapatkan semula baris dengan rnk = 2, yang mewakili gaji kedua tertinggi.
Nota lain:
Apabila memilih maklumat lain, pilihan fungsi analisis akan mempengaruhi keputusan. Sekiranya seri, RANK() akan melangkau kedudukan dan ROW_NUMBER() akan mengembalikan pekerja seterusnya. Dalam kes ini, DENSE_RANK() biasanya diutamakan.
Pilihan fungsi analisis akhirnya bergantung pada keperluan perniagaan khusus dan cara mengendalikan situasi seri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Gaji Tertinggi Kedua dalam SQL Menggunakan Fungsi Analitik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!