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

Bagaimana untuk Mencari Rekod Maksimum untuk Setiap Kumpulan dalam SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-07 21:47:41246semak imbas

How to Find the Maximum Record for Each Group in SQL?

Cari rekod terbesar mengikut kumpulan dalam SQL

Dalam pengurusan pangkalan data, selalunya perlu mendapatkan semula rekod terbesar dalam setiap kumpulan data. Pertimbangkan senario berikut.

Soalan:

Anda mempunyai jadual dengan tiga medan: "Nama", "Atas" dan "Jumlah", dengan data berikut:

Name Top Total
cat 1 10
dog 2 7
cat 3 20
horse 4 4
cat 5 10
dog 6 9

Tugas anda ialah mencari rekod dengan nilai "Jumlah" terbesar untuk setiap nilai "Nama" unik. Hasil yang diingini hendaklah:

Name Top Total
cat 3 20
horse 4 4
dog 6 9

Penyelesaian:

Untuk mendapatkan semula rekod maksimum bagi setiap kumpulan, anda boleh menggunakan pertanyaan 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>

Pertanyaan ini membandingkan nilai "Jumlah" setiap rekod dengan nilai "Jumlah" maksimumnya dalam kumpulan "Nama" yang sama. Kemudian pilih rekod yang nilai "Jumlah"nya sepadan.

Sebagai alternatif, anda boleh menggunakan subkueri untuk mencapai hasil yang sama:

<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 mula-mula menggunakan subkueri untuk mengira nilai "Jumlah" maksimum untuk setiap "Nama" unik. Pertanyaan utama kemudiannya bergabung dengan jadual dengan subquery untuk memilih hanya rekod dengan nilai "Jumlah" maksimum yang sepadan.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Rekod Maksimum untuk Setiap Kumpulan 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