Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Tertinggi Lajur Dikumpulkan mengikut ID dalam SQL dengan Cekap?

Bagaimana untuk Mendapatkan Nilai Tertinggi Lajur Dikumpulkan mengikut ID dalam SQL dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2025-01-21 08:09:39979semak imbas

How to Efficiently Retrieve the Highest Value of a Column Grouped by ID in SQL?

Pertanyaan SQL untuk Mencari Nilai Lajur Maksimum Dikumpulkan mengikut ID

Artikel ini menangani masalah mendapatkan semula nilai tertinggi dengan cekap daripada lajur, dikumpulkan mengikut ID unik dalam jadual pangkalan data. Mari kita ilustrasikan dengan jadual "SKOR":

<code>ID    ROUND    SCORE
1     1        3
1     2        6
1     3        2
2     1        10
2     2        12
3     1        6</code>

Matlamat kami adalah untuk mendapatkan baris yang mengandungi nilai "BULAT" maksimum untuk setiap "ID", bersama "SKOR" yang sepadan dengannya. Output yang dikehendaki ialah:

<code>ID   ROUND   SCORE
1    3       2
2    2       12
3    1       6</code>

Walaupun pendekatan subkueri boleh dilakukan, pendekatan ini boleh menjadi tidak cekap untuk set data yang besar. Kaedah unggul menggunakan fungsi tetingkap:

<code class="language-sql">SELECT DISTINCT
       id
      ,max(round) OVER (PARTITION BY id) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;</code>

Pertanyaan ini memanfaatkan max(round) OVER (PARTITION BY id) untuk menentukan "BULAT" maksimum bagi setiap "ID". first_value(score) OVER (PARTITION BY id ORDER BY round DESC) kemudian mendapatkan semula "SKOR" yang dikaitkan dengan "PUSINGAN" maksimum itu. DISTINCT memastikan hanya satu baris setiap "ID" dikembalikan.

Pendekatan fungsi tetingkap ini mengelakkan berbilang imbasan jadual, memberikan penyelesaian yang lebih cekap dengan ketara untuk pangkalan data yang besar.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Tertinggi Lajur Dikumpulkan mengikut ID dalam SQL dengan Cekap?. 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