nilai maksimum pertanyaan kumpulan SQL
Soalan ini direka bentuk untuk mengekstrak data tertentu daripada jadual, dengan matlamat mencari rekod dengan nilai "Jumlah" tertinggi untuk setiap medan "Nama" unik. Ini berbeza dengan masalah mencari rekod terakhir setiap kumpulan.
Berikut ialah dua kaedah pertanyaan SQL untuk mencapai matlamat ini:
Kaedah 1: Subkueri
<code class="language-sql">SELECT Name, Top, Total FROM sometable WHERE Total = ( SELECT MAX(Total) FROM sometable i WHERE i.Name = sometable.Name );</code>
Pertanyaan ini menggunakan subkueri untuk mencari nilai Name
maksimum dalam setiap kumpulan Total
dan kemudian memilih hanya rekod yang sepadan dengan nilai maksimum tersebut.
Kaedah 2: Sambungan diri
<code class="language-sql">SELECT Name, Top, Total FROM sometable INNER JOIN ( SELECT MAX(Total) AS Total, Name FROM sometable GROUP BY Name ) AS max ON max.Name = sometable.Name AND max.Total = sometable.Total;</code>
Pertanyaan ini menggunakan INNER JOIN
untuk menyertai sometable
dengan subkueri yang mengira nilai Name
maksimum untuk setiap kumpulan Total
. Syarat INNER JOIN
memastikan bahawa hanya rekod yang nilai Total
nya sepadan dengan nilai maksimum untuk setiap kumpulan dipilih.
Kedua-dua kaedah memberikan hasil yang sama:
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
Atas ialah kandungan terperinci Bagaimana untuk Mencari Jumlah Maksimum untuk Setiap Kumpulan Nama dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!