首頁 >資料庫 >mysql教程 >如何在沒有子查詢的情況下取得 Oracle 中每組的前 N ​​個結果?

如何在沒有子查詢的情況下取得 Oracle 中每組的前 N ​​個結果?

DDD
DDD原創
2025-01-19 15:01:38255瀏覽

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

在 Oracle 資料庫中取得每個群組的頂層結果

問題:

在不使用子查詢的情況下,取得 Oracle 資料庫中每個群組的前 N ​​個結果。

範例:

考慮包含員工資訊的給定表:

emp_id name occupation
1 John Smith Accountant
2 Jane Doe Engineer
3 Jack Black Funnyman

目標是從每個職業中檢索三名員工(前 3 名),而不使用子查詢。

解:

<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>

說明:

rank() 函數用於為每位員工在其各自的職業中分配排名。 partition by occupation 子句確保每個職業分別排名。

rank <= 3 條件篩選出每個職業中排名小於等於 3 的員工。

附加資訊:

有關 rank() 函數的更多信息,請參閱以下資源:https://www.php.cn/link/56138186020206c2b1d99be41c8dc9b8

以上是如何在沒有子查詢的情況下取得 Oracle 中每組的前 N ​​個結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn