集合関数とは?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(エスキューエルサーバー)など、あらゆるデータベースで標準的に使える関数となっています。
また、クラウド型のデータベースサービスやビッグデータ分析ツールでも集合関数は重要な役割を果たしています。大量のデータをすばやく集計するための基礎となるからです。