首頁 > 資料庫 > mysql教程 > 如何在SQL中選擇每個群組內的最大值?

如何在SQL中選擇每個群組內的最大值?

Patricia Arquette
發布: 2024-12-29 18:24:11
原創
633 人瀏覽過

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

具有最大值選擇的 SQL Group By

在 SQL 中,GROUP BY 子句允許我們根據指定的列對行進行分組。與 MAX 函數一起使用時,可用於選擇每組中的最大值。

問題陳述

假設您有一個包含以下資料的表:

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

您只想擷取 AlarmID 和 AlarmUnit 定義的每個群組的最新資訊。預期輸出應該是:

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

解決方案

要解決這個問題,我們可以在Oracle、SQL Server 2005 和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
登入後複製

對於MySQL,查詢是:

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
登入後複製

對於PostgreSQL 8.3及以下版本,我們可以使用:

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM    TableName
ORDER BY
        alarmId, alarmUnit, id DESC
登入後複製

以上是如何在SQL中選擇每個群組內的最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板