Oracleの集合関数(最大、最小、件数、合計、平均、中央値)の使い方をまとめていきます。
広告
最大値を取得する
最大値を取得する場合、MAX関数を使用します。
文法 | MAX(column) |
引数 | column:項目 |
戻り値 | 指定した項目内の最大値を返却します。 ※NULL値は最大値の判断に含まれません。 ※該当データがない場合、NULLのデータしかない場合はNULLを返却します。 ※NULLの場合に最大値を0としたいと場合、NVL関数を使用します。 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
SQL>-- 体重が一番重い生徒の体重 SQL>SELECT MAX(WEIGHT) as 最大 FROM T_STUDENT; 最大 --------------- 80 SQL> SQL>-- 各組の一番重い生徒の体重 SQL>SELECT CLASS, MAX(WEIGHT) as 最大 FROM T_STUDENT GROUP BY CLASS ORDER BY CLASS; CLASS 最大 -------- --------------- 1 70 2 80 SQL> SQL>-- 該当レコードがない場合 SQL>SELECT MAX(WEIGHT) as 最大 FROM T_STUDENT WHERE CLASS = 3; 最大 --------------- SQL> SQL>-- 該当レコードがない場合は0とする SQL>SELECT NVL(MAX(WEIGHT),0) as 最大 FROM T_STUDENT WHERE CLASS = 3; 最大 --------------- 0 |
CLASS | NAME | WEIGHT |
1 | Suzuki | 60 |
1 | Yamashita | 70 |
2 | Yamada | 80 |
2 | Tanaka | 50 |
2 | Aoyama | NULL |
最小値を取得する
最小値を取得する場合、MIN関数を使用します。
文法 | MIN(column) |
引数 | column:項目 |
戻り値 | 指定した項目内の最小値を返却します。 ※NULL値は最小値の判断に含まれません。 ※該当データがない場合、NULLのデータしかない場合はNULLを返却します。 ※NULLの場合に最大値を0としたいと場合、NVL関数を使用します。 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
SQL>-- 体重が一番軽い生徒の体重 SQL>SELECT MIN(WEIGHT) as 最小 FROM T_STUDENT; 最小 --------------- 60 SQL> SQL>-- 各組の一番軽い生徒の体重 SQL>SELECT CLASS, MIN(WEIGHT) as 最小 FROM T_STUDENT GROUP BY CLASS ORDER BY CLASS; CLASS 最小 -------- --------------- 1 60 2 50 SQL> SQL>-- 該当レコードがない場合 SQL>SELECT MIN(WEIGHT) as 最小 FROM T_STUDENT WHERE CLASS = 3; 最小 --------------- SQL> SQL>-- 該当レコードがない場合は0とする SQL>SELECT NVL(MIN(WEIGHT),0) as 最小 FROM T_STUDENT WHERE CLASS = 3; 最小 --------------- 0 |
CLASS | NAME | WEIGHT |
1 | Suzuki | 60 |
1 | Yamashita | 70 |
2 | Yamada | 80 |
2 | Tanaka | 50 |
2 | Aoyama | NULL |
件数を取得する
件数を取得する場合、COUNT関数を使用します。
文法 | COUNT(* | column) |
引数 | column:項目 |
戻り値 | 指定した項目内の値があるレコード件数を返却します。 ※NULL値のレコードは件数に含まれません。 ※該当データがない場合、0を返却します。 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
SQL>-- 生徒数 SQL>SELECT COUNT(NAME) as 件数 FROM T_STUDENT; 件数 --------------- 5 SQL> SQL>-- 生徒数(NULL値を含むレコードはカウントされない) SQL>SELECT COUNT(WEIGHT) as 件数 FROM T_STUDENT; 件数 --------------- 4 SQL> SQL>-- 各組の生徒数 SQL>SELECT CLASS, COUNT(NAME) as 件数 FROM T_STUDENT GROUP BY CLASS ORDER BY CLASS; CLASS 件数 -------- --------------- 1 2 2 3 SQL> SQL>-- 該当レコードがない場合 SQL>SELECT COUNT(NAME) as 件数 FROM T_STUDENT WHERE CLASS = 3; 件数 --------------- 0 |
CLASS | NAME | WEIGHT |
1 | Suzuki | 60 |
1 | Yamashita | 70 |
2 | Yamada | 80 |
2 | Tanaka | 50 |
2 | Aoyama | NULL |
合計値を取得する
合計値を取得する場合、SUM関数を使用します。
文法 | SUM(column) |
引数 | column:項目 |
戻り値 | 指定した項目内の合計を返却します。 ※該当データがない場合、NULLのデータしかない場合はNULLを返却します。 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
SQL>-- 生徒の合計体重 SQL>SELECT SUM(WEIGHT) as 合計 FROM T_STUDENT; 合計 --------------- 260 SQL> SQL>-- 各組の生徒の合計体重 SQL>SELECT CLASS, SUM(WEIGHT) as 合計 FROM T_STUDENT GROUP BY CLASS ORDER BY CLASS; CLASS 合計 -------- --------------- 1 130 2 130 SQL> SQL>-- 該当レコードがない場合 SQL>SELECT SUM(WEIGHT) as 合計 FROM T_STUDENT WHERE CLASS = 3; 合計 --------------- SQL> SQL>-- 該当レコードがない場合は0とする SQL>SELECT NVL(SUM(WEIGHT),0) as 合計 FROM T_STUDENT WHERE CLASS = 3; 合計 --------------- 0 |
CLASS | NAME | WEIGHT |
1 | Suzuki | 60 |
1 | Yamashita | 70 |
2 | Yamada | 80 |
2 | Tanaka | 50 |
2 | Aoyama | NULL |
平均値を取得する
平均値を取得する場合、AVG関数を使用します。
文法 | AVG(column) |
引数 | column:項目 |
戻り値 | 指定した項目内の平均値を返却します。 ※該当データがない場合、NULLのデータしかない場合はNULLを返却します。 ※NULLのデータは平均値を求める分子、分母に加算されません。 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
SQL>-- 生徒の平均体重 SQL>SELECT AVG(WEIGHT) as 平均 FROM T_STUDENT; 平均 --------------- 65 SQL> SQL>-- NULL値は0として平均する SQL>SELECT AVG(NVL(WEIGHT,0)) as 平均 FROM T_STUDENT; 平均 --------------- 52 SQL> SQL>-- 各組の生徒の平均体重 SQL>SELECT CLASS, AVG(WEIGHT) as 平均 FROM T_STUDENT GROUP BY CLASS ORDER BY CLASS; CLASS 平均 -------- --------------- 1 65 2 65 SQL> SQL>-- 該当レコードがない場合 SQL>SELECT AVG(WEIGHT) as 平均 FROM T_STUDENT WHERE CLASS = 3; 平均 --------------- |
CLASS | NAME | WEIGHT |
1 | Suzuki | 60 |
1 | Yamashita | 70 |
2 | Yamada | 80 |
2 | Tanaka | 50 |
2 | Aoyama | NULL |
中央値(補正後の中央値)を取得する
合計値を取得する場合、MEDIAN関数を使用します。
文法 | MEDIAN(column) |
引数 | column:項目 |
戻り値 | 中央値または補正後の中央値を返却します。 ※NULLのデータは中央値を求める順位に含まれません。 ※該当レコードが5件(奇数)の場合、3番目(中央)の値を返却します。 ※該当レコードが4件(偶数)の場合、中央(2番目、3番目)の値を保管した値を返却します。 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
SQL>-- 生徒の体重の中央値(対象が偶数の場合) SQL>SELECT MEDIAN(WEIGHT) as 中央値 FROM T_STUDENT; 中央値 --------------- 65 SQL> SQL>-- 生徒の体重の中央値(対象が奇数の場合) SQL>SELECT MEDIAN(NVL(WEIGHT, 0)) as 中央値 FROM T_STUDENT; 中央値 --------------- 62 SQL> SQL>-- 該当レコードがない場合 SQL>SELECT MEDIAN(WEIGHT) as 中央値 FROM T_STUDENT WHERE CLASS = 3; 中央値 --------------- |
CLASS | NAME | WEIGHT |
1 | Suzuki | 60 |
1 | Yamashita | 70 |
2 | Yamada | 80 |
2 | Tanaka | 50 |
2 | Aoyama | NULL |