Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Keputusan N Teratas bagi setiap Kumpulan dalam Oracle Tanpa Subkueri?
Dapatkan hasil teratas untuk setiap kumpulan dalam pangkalan data Oracle
Soalan:
Dapatkan hasil N teratas untuk setiap kumpulan dalam pangkalan data Oracle tanpa menggunakan subkueri.
Contoh:
Pertimbangkan jadual yang diberikan yang mengandungi maklumat pekerja:
emp_id | name | occupation |
---|---|---|
1 | John Smith | Accountant |
2 | Jane Doe | Engineer |
3 | Jack Black | Funnyman |
Matlamatnya adalah untuk mendapatkan semula tiga pekerja (3 teratas) daripada setiap pekerjaan tanpa menggunakan subkueri.
Penyelesaian:
<code class="language-sql">select * from (select emp_id, name, occupation, rank() over (partition by occupation order by emp_id) as rank from employee) where rank <= 3;</code>
Arahan:
Fungsirank()
digunakan untuk menetapkan kedudukan kepada setiap pekerja dalam pekerjaan masing-masing. Klausa partition by occupation
memastikan bahawa setiap pekerjaan disenaraikan secara berasingan.
rank <= 3
Syarat ini menapis pekerja yang kedudukannya kurang daripada atau sama dengan 3 dalam setiap pekerjaan.
Maklumat tambahan:
Untuk maklumat lanjut tentang fungsi rank()
, sila lihat sumber berikut: https://www.php.cn/link/56138186020206c2b1d99be41c8dc9b8
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Keputusan N Teratas bagi setiap Kumpulan dalam Oracle Tanpa Subkueri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!