Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Jumlah Maksimum untuk Setiap Kumpulan Nama dalam SQL?

Bagaimana untuk Mencari Jumlah Maksimum untuk Setiap Kumpulan Nama dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 21:11:44308semak imbas

How to Find the Maximum Total for Each Name Group in SQL?

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

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