Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mendapatkan Nilai Yang Dikaitkan dengan Nilai Lajur Maksimum Dalam Kumpulan dalam Oracle SQL?

Bagaimana untuk Cekap Mendapatkan Nilai Yang Dikaitkan dengan Nilai Lajur Maksimum Dalam Kumpulan dalam Oracle SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-17 19:21:37616semak imbas

How to Efficiently Retrieve Values Associated with Maximum Column Values Within Groups in Oracle SQL?

Oracle SQL: Mengekstrak Nilai Dipautkan kepada Nilai Lajur Maksimum dalam Kumpulan

Tugas pangkalan data biasa melibatkan pemilihan nilai yang dikaitkan dengan nilai maksimum lajur, terutamanya apabila berurusan dengan data terkumpul. Mari kita pertimbangkan jadual dengan lajur KEY, NUM dan VAL:

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

Objektifnya adalah untuk mencari NUM maksimum bagi setiap KEY dan VAL yang sepadan. Output yang dikehendaki:

KEY VAL
A AB
B EF
C HI
D LM

Satu kaedah menggunakan subkueri:

<code class="language-sql">select KEY, VAL
from TABLE_NAME TN
where NUM = (
    select max(NUM)
    from TABLE_NAME TMP
    where TMP.KEY = TN.KEY
    );</code>

Walau bagaimanapun, pendekatan yang lebih cekap dan boleh dibaca menggunakan fungsi 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>

Ini memberikan pangkat dalam setiap KEY kumpulan berdasarkan nilai NUM menurun. Klausa WHERE kemudian menapis untuk kedudukan teratas (seqnum = 1), menghasilkan hasil yang diingini:

KEY VAL
A AB
B EF
C HI
D LM

Walaupun kedua-dua kaedah mencapai hasil yang sama, pendekatan ROW_NUMBER() umumnya memberikan prestasi dan kejelasan yang lebih baik, terutamanya dengan set data yang lebih besar. Pilihan optimum bergantung pada keperluan dan keutamaan tertentu, tetapi ROW_NUMBER() menawarkan penyelesaian yang mantap dan elegan untuk masalah SQL biasa ini.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mendapatkan Nilai Yang Dikaitkan dengan Nilai Lajur Maksimum Dalam Kumpulan dalam 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