Petua SQL: Ekstrak nilai maksimum mengikut kumpulan
Dalam pertanyaan pangkalan data, selalunya perlu untuk mengekstrak nilai maksimum untuk setiap kumpulan berbeza dalam jadual. Artikel ini akan menyelesaikan masalah cara memilih rekod dengan nilai "Jumlah" tertinggi untuk setiap "Nama" unik dalam jadual.
Contoh jadual dan data:
Andaikan kita mempunyai jadual sampel berikut:
Name | Top | Total |
---|---|---|
cat | 1 | 10 |
dog | 2 | 7 |
cat | 3 | 20 |
horse | 4 | 4 |
cat | 5 | 10 |
dog | 6 | 9 |
Sasaran pertanyaan:
Matlamat kami adalah untuk mengekstrak keputusan berikut:
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
Penyelesaian:
Ini boleh dicapai menggunakan pertanyaan SQL berikut:
<code class="language-sql">SELECT Name, Top, Total FROM sometable WHERE Total = (SELECT MAX(Total) FROM sometable i WHERE i.Name = sometable.Name);</code>
Penjelasan:
Pertanyaan ini menggunakan subkueri dalam klausa WHERE. Subkueri mencari nilai maksimum "Jumlah" untuk setiap kumpulan berdasarkan "Nama". Pertanyaan luar kemudian menapis jadual dan memilih hanya rekod yang "Jumlah"nya sepadan dengan nilai maksimum ini.
Alternatif:
Alternatif untuk menggunakan cantuman dalaman:
<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>
Kesimpulan:
Kedua-dua kaedah berkesan dalam mengekstrak rekod yang diperlukan daripada jadual dengan mengenal pasti nilai maksimum "Jumlah" untuk setiap "Nama" yang berbeza. Pertanyaan ini boleh disesuaikan dengan pelbagai sistem pengurusan pangkalan data dan menyediakan kaedah umum untuk mengekstrak nilai maksimum daripada data terkumpul.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai 'Jumlah' Maksimum untuk Setiap 'Nama' Unik dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!