首頁 > 資料庫 > mysql教程 > 如何使用 Oracle SQL 取得分組資料中每個 KEY 的最大 VAL?

如何使用 Oracle SQL 取得分組資料中每個 KEY 的最大 VAL?

Susan Sarandon
發布: 2025-01-17 19:11:08
原創
350 人瀏覽過

How to Fetch the Maximal VAL for Each KEY in Grouped Data Using Oracle SQL?

提取 Oracle SQL 中每個 KEY 的最高 VAL

本指南示範如何使用 Oracle SQL 高效檢索分組資料中每個 VAL 的最大 KEY。 讓我們來看一個常見的場景:

名為TABLE_NAME的表格包含以下資料:

KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM

目標是產生一個結果集,只顯示每個唯一 VAL 的最大 KEY

KEY VAL
A AB
B EF
C HI
D LM

高效率的 Oracle SQL 解決方案(10g 及更高版本):

雖然子查詢可以實現這一點,但更優雅且通常更快的解決方案使用 ROW_NUMBER() 分析函數:

<code class="language-sql">SELECT key, val
FROM (
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY key ORDER BY num DESC) AS seqnum
    FROM table_name t
) t
WHERE seqnum = 1;</code>
登入後複製

此查詢首先為每個 seqnum 分區中的每一行分配一個排名 (KEY),按 NUM 按降序排列。 然後,它過濾結果以僅包含具有seqnum = 1 的行,從而有效地選擇具有最高NUM 的行(因此,隱式地,假設每個內VALNUM 之間存在一致的關係,則最高的VAL鍵)。

重要提示: 此方法保證每個 KEY 一行。 如果您需要以不同方式處理NUM 中的潛在關係(例如,如果多行共享最大值KEY,則傳回NUM 的多行),請考慮使用RANK()DENSE_RANK() 而不是ROW_NUMBER()

以上是如何使用 Oracle SQL 取得分組資料中每個 KEY 的最大 VAL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板