SUM, AVG, MAX, MIN, COUNT 関数の完全ガイド【初心者向け】

Oracle Master Silver

SQLでのデータ分析に欠かせない基本集計関数「SUM」「AVG」「MAX」「MIN」「COUNT」。
本記事では、scottスキーマEMPテーブルを使用しながら、これらの関数の仕組み使い方実用例注意点を、初心者にもわかりやすく解説します。さらに、結果の可視化やよくある質問も盛り込みました。


EMP テーブルの概要

まずは今回使用するEMPテーブルの構造を確認しましょう。

SELECT EMPNO, ENAME, JOB, SAL, COMM, DEPTNO FROM EMP;

テーブルサンプル

EMPNOENAMEJOBSALCOMMDEPTNO
7369SMITHCLERK800NULL20
7499ALLENSALESMAN160030030
7839KINGPRESIDENT5000NULL10
7902FORDANALYST3000NULL20

集計関数とは?

集計関数は、指定した列のデータを一つの値にまとめるための関数です。

関数説明
SUM合計値を計算する
AVG平均値を計算する
MAX最大値を取得する
MIN最小値を取得する
COUNT行数(または値の個数)をカウントする

1. SUM 関数 – 合計値の計算

機能

指定した列の合計値を計算します。NULL値は無視されます。

使用例: 部署ごとの合計給与

SELECT DEPTNO, SUM(SAL) AS TOTAL_SALARY
FROM EMP
GROUP BY DEPTNO;

結果の解釈

DEPTNOTOTAL_SALARY
108750
206775
309400
  • 10部門の合計給与は8750。
  • NULL値は含まれないため、歩合給 (COMM) は集計結果に影響を与えません。

2. AVG 関数 – 平均値の計算

機能

指定列の平均値を計算します。NULL値は無視されます。

使用例: 部署ごとの平均給与

SELECT DEPTNO, AVG(SAL) AS AVG_SALARY
FROM EMP
GROUP BY DEPTNO;

結果の解釈

DEPTNOAVG_SALARY
102916.67
202258.33
301566.67

平均値は小数点以下まで計算されるため、見やすくするには ROUND 関数を組み合わせると良いでしょう。


3. MAX 関数 – 最大値を取得する

機能

指定列の最大値を返します。

使用例: 部署ごとの最高給与

SELECT DEPTNO, MAX(SAL) AS MAX_SALARY
FROM EMP
GROUP BY DEPTNO;

結果の解釈

DEPTNOMAX_SALARY
105000
203000
302850
  • 10部門の最大給与は、KINGが受け取る5000。
  • 最大値を求めることで、リーダーや高給者の特定に役立ちます。

4. MIN 関数 – 最小値を取得する

機能

指定列の最小値を返します。

使用例: 部署ごとの最低給与

SELECT DEPTNO, MIN(SAL) AS MIN_SALARY
FROM EMP
GROUP BY DEPTNO;

結果の解釈

DEPTNOMIN_SALARY
101300
20800
30950
  • 最小値を把握することで、低賃金のポジションを確認できます。

5. COUNT 関数 – 行数のカウント

機能

行数または値の個数をカウントします。

使用例: 部署ごとの従業員数

SELECT DEPTNO, COUNT(*) AS EMP_COUNT
FROM EMP
GROUP BY DEPTNO;

結果の解釈

DEPTNOEMP_COUNT
103
203
306
  • 10部門の従業員数は3人。

6. 複数の集計関数を組み合わせる

課題: 部署ごとに以下の情報を取得してください:

  • 合計給与
  • 平均給与
  • 最大給与
  • 最小給与
  • 従業員数
SELECT 
DEPTNO,
SUM(SAL) AS TOTAL_SALARY,
AVG(SAL) AS AVG_SALARY,
MAX(SAL) AS MAX_SALARY,
MIN(SAL) AS MIN_SALARY,
COUNT(*) AS EMP_COUNT
FROM EMP
GROUP BY DEPTNO;

結果の解釈

DEPTNOTOTAL_SALARYAVG_SALARYMAX_SALARYMIN_SALARYEMP_COUNT
1087502916.67500013003
2067752258.3330008003
3094001566.6628509506

視覚的なまとめ

以下は集計結果をグラフ化した例です(概念的なイメージとして)。

部署ごとの合計給与(棒グラフ)

10部門: ████████████  8750
20部門: ███████████████ 10875
30部門: ████████████ 9400

注意点とベストプラクティス

NULL値の扱い

  • NULL値はSUM, AVG, MAX, MINでは無視されます。
  • COUNT(*) は NULL値を含むすべての行をカウントします。

パフォーマンス最適化

  • 大規模なデータセットでは、インデックスやEXPLAIN PLANを活用してクエリを最適化しましょう。

FAQ

Q1: 集計関数に条件を追加できますか?
A1: はい、WHEREHAVING を使用して条件付き集計が可能です。

Q2: 小数点以下の桁数を調整できますか?
A2: ROUND 関数を使用して結果を丸めることができます。例: ROUND(AVG(SAL), 2)


まとめ

本記事では、SUM, AVG, MAX, MIN, COUNT の5つの基本集計関数について、以下を解説しました:

  • 各関数の役割
  • 使用例と結果の解釈
  • よくある注意点

これらの関数を使いこなせるようになれば、SQLでのデータ分析が一段と効率的になります!ぜひ、実際にSQLを試してみてください。

次のステップ:
GROUPING, ROLLUP, ウィンドウ関数など、さらに高度な集計手法も学んでみましょう!

[参考]
Oracle Database SQL言語リファレンス 19c

コメント

タイトルとURLをコピーしました