Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mencari baris dengan nilai lajur maksimum, dibahagikan dengan lajur lain di MySQL?

Bagaimana untuk mencari baris dengan nilai lajur maksimum, dibahagikan dengan lajur lain di MySQL?

Susan Sarandon
Susan Sarandonasal
2025-01-25 06:46:08435semak imbas

How to Find Rows with Maximum Column Values, Partitioned by Another Column in MySQL?

Kumpulan MySQL mengikut lajur lain untuk mencari baris dengan nilai lajur terbesar

Dalam pangkalan data, mencari baris dengan nilai terbesar yang dikumpulkan oleh lajur lain ialah tugas analisis biasa. Dalam MySQL, ini boleh dicapai dengan menggabungkan pengagregatan dan penapisan.

Artikel ini meneroka masalah mendapatkan semula baris daripada jadual yang mengandungi nilai maksimum lajur tertentu dalam setiap kumpulan yang ditakrifkan oleh lajur lain. Contohnya, dalam jadual "Sepuluh Teratas" yang disediakan, tugasnya adalah untuk mengekstrak baris bagi setiap nilai "rumah" unik dan nilai maksimum yang sepadan bagi lajur "masa tarikh".

Pertanyaan percubaan pada mulanya adalah seperti berikut, tetapi ia adalah cacat:

<code class="language-sql">SELECT
  s1.id,
  s1.home,
  s1.datetime,
  s1.player,
  s1.resource
FROM TopTen s1
JOIN (SELECT
  id,
  MAX(`datetime`) AS dt
FROM TopTen
GROUP BY id) AS s2
  ON s1.id = s2.id
ORDER BY `datetime`</code>

Pertanyaan tidak mengenal pasti nilai "masa tarikh" maksimum untuk setiap "rumah". Untuk menyelesaikan masalah dengan betul, kedua-dua "rumah" dan "masa tarikh" perlu dikumpulkan dalam subkueri:

<code class="language-sql">SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime</code>

Pertanyaan akhir ini berjaya mengenal pasti setiap baris dengan nilai "rumah" berbeza yang mengandungi nilai maksimum lajur "masa tarikh"nya, menghasilkan hasil yang dijangkakan:

id home datetime player resource
1 10 04/03/2009 john 399
2 11 04/03/2009 juliet 244
5 12 04/03/2009 borat 555
8 13 01/01/2009 borat 700

Atas ialah kandungan terperinci Bagaimana untuk mencari baris dengan nilai lajur maksimum, dibahagikan dengan lajur lain di MySQL?. 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