指定した単位でMAX値を取得するには、MAX~OVER句を使用します。
サンプル
以下のテーブルを使用します。
name | bu | ka | score |
---|---|---|---|
佐藤 | 営業部 | 1課 | 80 |
鈴木 | 営業部 | 1課 | 50 |
高橋 | 営業部 | 2課 | 90 |
田中 | 経理部 | 1課 | 70 |
伊藤 | 経理部 | 1課 | 60 |
例)bu単位でscoreの最大値を取得する
1 2 3 4 5 6 7 |
SELECT name ,bu ,score ,MAX(score) OVER(PARTITION BY bu) AS maxscore FROM T_SCORE; |
- SQL*Plus
- name bu score maxscore ----- -------- ------ ---------- 佐藤 営業部 80 90 鈴木 営業部 50 90 高橋 営業部 90 90 田中 経理部 70 70 伊藤 経理部 60 70
例)bu, ka単位でscoreの最大値を取得する
1 2 3 4 5 6 7 8 |
SELECT name ,bu ,ka ,score ,MAX(score) OVER(PARTITION BY bu, ka) AS maxscore FROM T_SCORE; |
- SQL*Plus
- name bu ka score maxscore ----- -------- ----- ------ ---------- 佐藤 営業部 1課 80 80 鈴木 営業部 1課 50 80 高橋 営業部 2課 90 90 田中 経理部 1課 70 70 伊藤 経理部 1課 60 70
解説
- MAXの引数に最大値を取得したい対象列名を指定します。
- OVERの引数にMAXを取得したい単位を指定します。
関連項目
- [ORACLE関数] 指定した単位でMIN値を取得する(MIN~OVER)
- [ORACLE関数] 指定した単位でMAX値を取得する(MAX~OVER)
- [ORACLE関数] 指定した単位毎の件数を取得する(COUNT~OVER)
- [ORACLE関数] 指定した単位で平均値を取得する(AVG~OVER)
- [ORACLE関数] 指定した単位でSUM値を取得する(SUM~OVER)