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
Lepaskan: 2025-01-21 08:09:39
asal
979 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan