集合関数とは?SQLでデータを集計する基本をわかりやすく解説!
生徒
「先生、SQLの集合関数(シュウゴウカンスウ)ってよく聞くけど、何をするものなんですか?」
先生
「集合関数は、データベース(Database/データベース)にあるたくさんのデータをまとめて計算するための関数のことです。例えば、売上の合計や平均、社員数などを求めるときに使います。」
生徒
「なるほど!個別のデータを見るんじゃなくて、全体を集計するときに使うんですね?」
先生
「そうです!SQL(エスキューエル/Structured Query Language)では、集計処理をするためにCOUNT(カウント)やSUM(サム)などの集合関数を使います。実際に見てみましょう!」
1. 集合関数(シュウゴウカンスウ)とは?
集合関数とは、複数のデータをまとめて計算するための関数です。通常のSELECT文(セレクトブン)が「1件ずつデータを取得」するのに対し、集合関数は「全体の集計結果」を1つの値として返します。データベースの分析やレポート作成などで非常によく使われます。
主な集合関数には次のようなものがあります。
COUNT():データの件数を数えるSUM():合計値を求めるAVG():平均値を求めるMAX():最大値を求めるMIN():最小値を求める
これらを使いこなすことで、膨大なデータから瞬時に統計情報を取り出すことができます。
2. COUNT関数(カウント)で件数を数える
COUNT関数は、テーブル内のレコード数を数えるときに使います。たとえば、社員テーブルの人数を知りたい場合は次のように書きます。
SELECT COUNT(*) FROM employees;
この命令を実行すると、社員の総人数が1件の結果として返ります。COUNTは特定の列だけを対象にすることも可能です。
SELECT COUNT(salary) FROM employees;
この場合、給与(salary)がNULL(ヌル)でないデータだけをカウントします。
3. SUM関数(サム)で合計を求める
SUM関数は、指定した列の合計値を求めます。たとえば、売上データの合計金額を出す場合は次のように書きます。
SELECT SUM(amount) FROM sales;
このようにすると、すべての売上金額を合計した結果を1つの数値として返します。数値型(スウチガタ)の列であれば、SUM関数を使うことができます。
4. AVG関数(エーブイジー)で平均値を求める
AVG関数は、指定した列の平均値を計算します。たとえば、社員の平均給与を求めたいときは次のように書きます。
SELECT AVG(salary) FROM employees;
AVG関数はNULL(ヌル)を自動的に除外して平均を求めるため、未入力データがあっても正しい平均値を算出できます。
5. MAX関数(マックス)とMIN関数(ミン)で最大値・最小値を求める
MAX関数は最大値、MIN関数は最小値を求めるときに使います。たとえば、社員の最高給与と最低給与を調べたい場合は次のように書きます。
SELECT MAX(salary), MIN(salary) FROM employees;
この結果、最も高い給与と最も低い給与が1件ずつ表示されます。数値だけでなく、日付や文字列にも使うことができます。たとえば、最新の注文日を調べるときもMAX関数を使います。
SELECT MAX(order_date) FROM orders;
このように、集合関数は単なる数値の計算にとどまらず、さまざまなデータ型に対応しています。
6. GROUP BY句(グループバイク)と組み合わせて使う
集合関数は、GROUP BY句(グループバイク)と組み合わせることでさらに強力になります。たとえば、部署ごとの社員数を求めたいときは次のように書きます。
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
この命令により、部署(department)ごとに社員数が集計されます。GROUP BY句と組み合わせると、グループ単位での統計を取ることができるのが特徴です。
7. 集合関数の動作の特徴
集合関数を使うときに覚えておくべき重要なポイントがあります。
- NULL(ヌル)は自動的に除外される(COUNT(*)を除く)
- WHERE句で条件を絞ってから集計できる
- HAVING句を使うと、集計結果に対して条件を付けられる
たとえば、平均給与が30万円以上の部署だけを表示したい場合は、HAVING句を使って次のように書けます。
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) >= 300000;
このように、WHERE句が「集計前の条件」なのに対し、HAVING句は「集計後の条件」を指定するという違いがあります。
8. 実務での集合関数の活用例
集合関数は、業務システムやWebアプリなどで頻繁に使われます。たとえば、売上管理システムでは「月ごとの売上合計」や「商品の平均単価」を求めるときにSUMやAVGを使います。また、人事システムでは「部署ごとの社員数」や「最高給与の社員」などを求めるときにCOUNTやMAXが活躍します。
このように集合関数は、データ分析の基本となる機能です。レポート出力やダッシュボードの裏側では、これらの関数が必ずといっていいほど使われています。
9. 集合関数の歴史と発展
集合関数の考え方は、リレーショナルデータベース(RDB/アールディービー)が誕生した1970年代に生まれました。当時、データを「集合(セット)」として扱う数学的な発想が導入され、そこから「集合関数」という名前が生まれました。今日では、MySQL(マイエスキューエル)・PostgreSQL(ポストグレスキューエル)・Oracle(オラクル)・SQL Server(エスキューエルサーバー)など、あらゆるデータベースで標準的に使える関数となっています。
また、クラウド型のデータベースサービスやビッグデータ分析ツールでも集合関数は重要な役割を果たしています。大量のデータをすばやく集計するための基礎となるからです。
基本情報技術者試験の理解を確実に定着させたい人や、 科目A・Bをまとめて過去問演習したい人に向けた定番の問題集です。
基本情報技術者 パーフェクトラーニング 過去問題集を見る※ Amazonアソシエイト広告リンク
まとめ
集合関数は、データベースに蓄積された大量のデータを効率よく集計し、ビジネスに役立つ情報として活用するための非常に重要な機能です。SQLにおける基本でありながら、実務では欠かせない存在であり、データ分析やレポート作成、業務改善において頻繁に使用されます。COUNT関数による件数の把握、SUM関数による合計値の算出、AVG関数による平均値の算出、そしてMAX関数やMIN関数による最大値最小値の取得は、どれも日常的なデータ処理において不可欠です。
特に重要なのは、これらの集合関数が単体で使われるだけでなく、GROUP BY句やHAVING句と組み合わせることで、より高度な集計処理が可能になる点です。例えば、部署ごとの売上合計や社員数、商品カテゴリごとの平均価格など、グループ単位での分析が可能になります。これにより、データの傾向や問題点を把握しやすくなり、意思決定の精度を高めることができます。
また、NULLの扱いについても理解しておくことが重要です。多くの集合関数はNULLを自動的に除外するため、意図しない結果にならないように注意が必要です。COUNT関数のCOUNTとCOUNT列指定の違いも、実務ではよく問われるポイントです。正確なデータ集計を行うためには、こうした細かな仕様を理解しておくことが求められます。
さらに、WHERE句とHAVING句の違いも押さえておきましょう。WHERE句は集計前のデータを絞り込むのに対し、HAVING句は集計後の結果に対して条件を指定します。この違いを理解することで、より柔軟で正確なSQLクエリを書くことができるようになります。
実務においては、売上分析システムや在庫管理システム、人事管理システムなど、さまざまな場面で集合関数が活用されています。例えば、月別売上の合計、顧客ごとの購入回数、商品の平均単価など、あらゆる分析の基盤となります。これらのスキルを身につけることで、単なるデータ取得にとどまらず、価値ある情報を導き出せるエンジニアへと成長することができます。
SQLの集合関数はシンプルに見えますが、その応用範囲は非常に広く、データ分析の基礎から応用まで幅広く対応できます。初心者のうちにしっかりと理解し、実際に手を動かしてクエリを書くことで、確実にスキルとして身につけていきましょう。データベース操作の基礎を固めることで、より高度な分析や最適化にも対応できるようになります。
サンプルプログラムで復習
SELECT department, COUNT(*) AS employee_count,
AVG(salary) AS average_salary,
MAX(salary) AS max_salary,
MIN(salary) AS min_salary
FROM employees
WHERE status = 'active'
GROUP BY department
HAVING AVG(salary) >= 300000;
上記のSQLでは、部署ごとの社員数、平均給与、最高給与、最低給与を一度に取得しています。さらに、在籍中の社員のみを対象にし、平均給与が一定以上の部署だけを抽出することで、実務でよくある分析条件を再現しています。このように集合関数と各種句を組み合わせることで、実践的なデータ分析が可能になります。
生徒
集合関数って、ただの計算機能だと思っていましたけど、実際はかなり重要なんですね。
先生
その通りです。データベースを扱う上で、集計処理は必ず必要になります。特に業務システムでは、数字をまとめて分析する場面が非常に多いです。
生徒
COUNTやSUMは理解できましたが、GROUP BYと組み合わせると一気に実用的になりますね。
先生
そうですね。GROUP BYを使うことで、単なる全体の集計ではなく、分類ごとの分析ができるようになります。これができるようになると、SQLの実力が一段上がります。
生徒
HAVING句も少し難しかったですが、集計後の条件というのは理解できました。
先生
良い理解です。WHEREとHAVINGの違いを意識して使い分けることが大切です。最初は混乱しますが、実際にクエリを書くことで自然と身につきます。
生徒
これからはデータを見るだけでなく、集計して分析することも意識してみます。
先生
それがとても大事です。集合関数を使いこなせるようになれば、データから価値を引き出せるようになりますよ。