Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Nilai Maksimum dalam Setiap Kumpulan dalam SQL?

Bagaimana untuk Memilih Nilai Maksimum dalam Setiap Kumpulan dalam SQL?

Patricia Arquette
Lepaskan: 2024-12-29 18:24:11
asal
633 orang telah melayarinya

How to Select the Maximum Value within Each Group in SQL?

Kumpulan SQL Mengikut dengan Pemilihan Nilai Maksimum

Dalam SQL, klausa GROUP BY membenarkan kami mengumpulkan baris berdasarkan lajur yang ditentukan. Apabila digunakan dengan fungsi MAX, ia boleh digunakan untuk memilih nilai terbesar daripada setiap kumpulan.

Pernyataan Masalah

Andaikan anda mempunyai jadual yang mengandungi data berikut:

ID Name AlarmID AlarmUnit AlarmLevel
1 Test Voltage PSU Warning
2 Test Voltage PSU Ceased
3 Test Voltage PSU Warning
4 Test Temperature RCC Warning
5 Test Temperature RCC Ceased

Anda hanya mahu mendapatkan maklumat terkini untuk setiap kumpulan yang ditakrifkan oleh AlarmID dan AlarmUnit. Output yang dijangkakan hendaklah:

ID Name AlarmID AlarmUnit AlarmLevel
3 Test Voltage PSU Warning
5 Test Temperature RCC Ceased

Penyelesaian

Untuk menyelesaikan masalah ini, kita boleh menggunakan pertanyaan berikut dalam Oracle, SQL Server 2005 dan PostgreSQL 8.4 :

SELECT  *
FROM    (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY alarmId, alarmUnit ORDER BY id DESC) AS rn
        FROM    TableName
        ) q
WHERE   rn = 1
Salin selepas log masuk

Untuk MySQL, pertanyaannya ialah:

SELECT  mi.*
FROM    (
        SELECT  alarmId, alarmUnit, MAX(id) AS mid
        FROM    TableName
        GROUP BY
                alarmId, alarmUnit
        ) mo
JOIN    TableName mi
ON      mi.id = mo.mid
Salin selepas log masuk

Untuk PostgreSQL 8.3 dan ke bawah, kita boleh menggunakan:

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM    TableName
ORDER BY
        alarmId, alarmUnit, id DESC
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Maksimum dalam Setiap Kumpulan dalam SQL?. 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