在 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中文網其他相關文章!