Oracle SQL 関数 : MAX,MIN : データ内の最大値及び最小値を返す
numberRet := MAX( [ALL , DISTINCT] <expr> [ OVER <分析句> ] ) MAX,MINは集計関数、または分析関数として使用します。 <expr>がNULLの項目は計算されません。また、DISTINCT指定の場合は重複行は計算されません。
例として、SUM関数で示した得意先コード、担当者コードでのグループ化をMAX,MIN関数に適応してみます。
SQL> SELECT |
2 TH.得意先コード |
3 , SUM (TD.売上数量 * TD.売上単価) AS 売上金額 |
4 , MAX (TD.売上数量 * TD.売上単価) AS MAX 売上金額 |
5 , MIN (TD.売上数量 * TD.売上単価) AS MIN 売上金額 |
6 FROM TT_売上 TH,TT_売上明細 TD |
7 WHERE TH.売上番号 = TD.売上番号 |
8 GROUP BY TH.得意先コード |
9 ORDER BY TH.得意先コード; |
得意先コード 売上金額 MAX 売上金額 MIN 売上金額 |
------------ ---------- ----------- ----------- |
1 1514000 540000 78000 |
2 560000 400000 40000 |
3 396000 220000 176000 |
4 570000 570000 570000 |
5 696000 540000 156000 |
SQL> SELECT |
2 TH.担当者コード |
3 , SUM (TD.売上数量 * TD.売上単価) AS 売上金額 |
4 , MAX (TD.売上数量 * TD.売上単価) AS MAX 売上金額 |
5 , MIN (TD.売上数量 * TD.売上単価) AS MIN 売上金額 |
6 FROM TT_売上 TH,TT_売上明細 TD |
7 WHERE TH.売上番号 = TD.売上番号 |
8 GROUP BY TH.担当者コード |
9 ORDER BY TH.担当者コード; |
担当者コード 売上金額 MAX 売上金額 MIN 売上金額 |
------------ ---------- ----------- ----------- |
1 1060000 540000 78000 |
2 396000 220000 176000 |
4 560000 400000 40000 |
5 570000 570000 570000 |
7 696000 540000 156000 |
9 454000 196000 78000 |
6行が選択されました。 |
分析の例として以下に示します。
以下の例は、売上明細を商品コード毎で見て、それぞれの売上数量のMAX,MINを抽出します。
最初のSQL文は商品コードの重複表示がされますが、これは全ての売上明細の行ごとに処理されているためです。
同一商品コードは一行しか表示されないようにしたのが2番目のSQL文で、DISTINCTを商品コードに付加しています。
SQL> SELECT |
2 商品コード |
3 , MAX (売上数量) OVER(PARTITION BY 商品コード) AS 最大売上数量 |
4 , MIN (売上数量) OVER(PARTITION BY 商品コード) AS 最少売上数量 |
5 FROM TT_売上明細 |
6 ORDER BY 商品コード; |
商品コード 最大売上数量 最少売上数量 |
---------- ------------ ------------ |
1 2 2 |
2 1 1 |
3 3 3 |
4 1 1 |
5 2 2 |
6 1 1 |
7 2 2 |
7 2 2 |
8 3 1 |
8 3 1 |
8 3 1 |
9 2 1 |
9 2 1 |
9 2 1 |
9 2 1 |
10 2 2 |
11 1 1 |
17行が選択されました。 |
SQL> SELECT |
2 DISTINCT 商品コード |
3 , MAX (売上数量) OVER(PARTITION BY 商品コード) AS 最大売上数量 |
4 , MIN (売上数量) OVER(PARTITION BY 商品コード) AS 最少売上数量 |
5 FROM TT_売上明細 |
6 ORDER BY 商品コード; |
商品コード 最大売上数量 最少売上数量 |
---------- ------------ ------------ |
1 2 2 |
2 1 1 |
3 3 3 |
4 1 1 |
5 2 2 |
6 1 1 |
7 2 2 |
8 3 1 |
9 2 1 |
10 2 2 |
11 1 1 |
11行が選択されました。 |
本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。