ホームページ > データベース > mysql チュートリアル > SQLで各グループ内の最大値を選択する方法は?

SQLで各グループ内の最大値を選択する方法は?

Patricia Arquette
リリース: 2024-12-29 18:24:11
オリジナル
629 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート