Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Nilai Maksimum untuk Setiap Kumpulan dalam Pangkalan Data SQL dengan Cekap?

Bagaimana untuk Memilih Nilai Maksimum untuk Setiap Kumpulan dalam Pangkalan Data SQL dengan Cekap?

DDD
DDDasal
2025-01-16 13:10:01507semak imbas

How to Efficiently Select the Maximum Value for Each Group in a SQL Database?

Mengekstrak Nilai Maksimum untuk Setiap Kumpulan dalam SQL

Tugas SQL biasa melibatkan mendapatkan semula nilai maksimum untuk setiap kumpulan unik dalam jadual. Mari kita gambarkan ini dengan contoh jadual:

Name Value AnotherColumn
Pump 1 8000.0 Something1
Pump 1 10000.0 Something2
Pump 1 10000.0 Something3
Pump 2 3043 Something4
Pump 2 4594 Something5
Pump 2 6165 Something6

Matlamat kami adalah untuk mencari Value tertinggi bagi setiap Name (pam), menghasilkan keputusan ini:

Name Value
Pump 1 10000.0
Pump 2 6165

Pendekatan naif menggunakan subkueri untuk mencari nilai maksimum bagi setiap nama selalunya membawa kepada entri pendua apabila berbilang baris berkongsi nilai maksimum yang sama:

<code class="language-sql">select a.name, value 
from out_pumptable as a,
(select name, max(value) as value from out_pumptable group by name) g
where a.name = g.name and g.value = a.value</code>

Walau bagaimanapun, penyelesaian yang lebih cekap dan ringkas menggunakan klausa GROUP BY:

<code class="language-sql">select name, max(value)
from out_pumptable
group by name;</code>

Pertanyaan ini mengumpulkan baris berdasarkan lajur Name dan kemudian memilih maksimum Value dalam setiap kumpulan, dengan berkesan mengelakkan hasil pendua dan menyediakan output yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Maksimum untuk Setiap Kumpulan dalam Pangkalan Data SQL dengan Cekap?. 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