Rumah >pangkalan data >tutorial mysql >Bagaimanakah Fungsi Analitik Oracle Mendapat Gaji Pekerja Kedua Tertinggi?
Gunakan fungsi analitik Oracle untuk mencari gaji pekerja kedua tertinggi
Mencari gaji kedua tertinggi adalah keperluan biasa dalam jadual data pekerja. Tidak seperti bahasa pengaturcaraan lain, Oracle menyediakan satu siri fungsi analitik untuk memudahkan tugas ini.
Cari fungsi yang telah ditetapkan untuk gaji kedua tertinggi
Oracle menyediakan beberapa fungsi analisis yang boleh membantu mencari gaji kedua tertinggi. Ini termasuk:
Pilih hanya gaji kedua tertinggi
Jika anda hanya perlu mendapatkan gaji kedua tertinggi, anda boleh menggunakan mana-mana fungsi di atas. Contohnya:
<code class="language-sql">SELECT sal FROM ( SELECT DISTINCT sal, RANK() OVER (ORDER BY sal DESC) AS rnk FROM emp ) WHERE rnk = 2;</code>
Pilih maklumat pekerja lain
Apabila memilih maklumat pekerja lain, kerana pertindihan perlu dipertimbangkan, pilihan fungsi menjadi sangat penting.
ROW_NUMBER()
ROW_NUMBER() akan memulangkan pekerja kedua dalam susunan gaji. Walau bagaimanapun, ia mungkin melangkau barisan jika terdapat seri untuk gaji tertinggi atau kedua tertinggi.
PANGKAT()
RANK() akan melangkau rekod jika terdapat seri untuk gaji tertinggi. Dalam kes ini, tidak akan ada rekod dengan RANK = 2.
DENSE_RANK()
DENSE_RANK() biasanya diutamakan kerana ia mengekalkan susunan rekod walaupun dalam keadaan seri. Ia memberikan kedudukan unik kepada rekod yang terikat.
Pilih gaji dan nama kedua tertinggi
Untuk memilih kedua-dua gaji kedua tertinggi dan nama pekerja, anda boleh menggunakan gabungan fungsi:
<code class="language-sql">SELECT name, sal FROM emp WHERE sal = (SELECT MAX(sal) FROM emp WHERE sal < (SELECT MAX(sal) FROM emp));</code>
Sebagai alternatif, untuk menyatakan logik dengan lebih jelas, anda boleh menggunakan kaedah berikut:
<code class="language-sql">SELECT name, sal FROM ( SELECT name, sal, DENSE_RANK() OVER (ORDER BY sal DESC) as rank FROM emp ) ranked_salaries WHERE rank = 2; </code>
Atas ialah kandungan terperinci Bagaimanakah Fungsi Analitik Oracle Mendapat Gaji Pekerja Kedua Tertinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!