Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Keputusan N Teratas bagi setiap Kumpulan dalam Oracle Tanpa Subkueri?

Bagaimana untuk Mendapatkan Keputusan N Teratas bagi setiap Kumpulan dalam Oracle Tanpa Subkueri?

DDD
DDDasal
2025-01-19 15:01:38255semak imbas

How to Get the Top N Results per Group in Oracle Without Subqueries?

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:

Fungsi

rank() 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn