Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengambil VAL Maksimum untuk Setiap KEY dalam Data Berkumpulan Menggunakan Oracle SQL?

Bagaimana untuk Mengambil VAL Maksimum untuk Setiap KEY dalam Data Berkumpulan Menggunakan Oracle SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-17 19:11:08354semak imbas

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

Mengekstrak VAL Tertinggi untuk Setiap KEY dalam Oracle SQL

Panduan ini menunjukkan cara untuk mendapatkan VAL maksimum dengan cekap untuk setiap KEY dalam data terkumpul menggunakan Oracle SQL. Mari kita periksa senario biasa:

Jadual bernama TABLE_NAME mengandungi data berikut:

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

Matlamatnya adalah untuk menjana set hasil yang menunjukkan hanya maksimum VAL untuk setiap unik KEY:

KEY VAL
A AB
B EF
C HI
D LM

Penyelesaian Oracle SQL yang Cekap (10g ke atas):

Walaupun subqueries boleh mencapai ini, penyelesaian yang lebih elegan dan selalunya lebih pantas menggunakan ROW_NUMBER() fungsi analitik:

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

Pertanyaan ini mula-mula memberikan kedudukan (seqnum) kepada setiap baris dalam setiap KEY partition, disusun mengikut NUM dalam tertib menurun. Kemudian, ia menapis hasil untuk hanya memasukkan baris dengan seqnum = 1, dengan berkesan memilih baris dengan NUM tertinggi (dan dengan itu, secara tersirat, tertinggi VAL dengan mengandaikan hubungan yang konsisten antara NUM dan VAL dalam setiap kunci).

Nota Penting: Kaedah ini menjamin satu baris setiap KEY. Jika anda perlu mengendalikan potensi ikatan dalam NUM secara berbeza (cth., kembalikan berbilang baris untuk KEY jika berbilang baris berkongsi maksimum NUM), pertimbangkan untuk menggunakan RANK() atau DENSE_RANK() dan bukannya ROW_NUMBER().

Atas ialah kandungan terperinci Bagaimana untuk Mengambil VAL Maksimum untuk Setiap KEY dalam Data Berkumpulan Menggunakan Oracle SQL?. 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