PostgreSQLの集約関数とは?COUNT/SUM/AVGを解説
生徒
「名簿の人数を数えたり、平均年齢を出したりしたいんですが、SQLでできますか?」
先生
「できます。そういう計算をまとめて行うときに使うのが集約関数です。」
生徒
「計算って聞くと難しそうです…」
先生
「電卓で数を数えたり足したりする感覚で使えます。表を見ながら一つずつ説明します。」
1. SQLとは何か?
SQLは、データベースという仕組みに保存されているデータを操作するための言葉です。データベースは、たくさんの情報を表の形で整理して保存する箱のようなものです。SQLを使うと、その表から必要な情報を取り出したり、数を数えたり、合計や平均を計算したりできます。PostgreSQLは、そのSQLを使って操作できる、信頼性の高いデータベースです。
2. 集約関数とは何か?
集約関数とは、複数の行をまとめて計算するための関数です。関数という言葉は少し難しく聞こえますが、「決まった計算をしてくれる道具」だと思ってください。例えば、名簿に何人いるかを数えたり、年齢を全部足したり、平均年齢を出したりする処理を、一行のSQLで行えます。これが集約関数の役割です。
3. サンプルテーブルを確認しよう
ここでは、usersテーブルを使って説明します。SQLを実行する前のテーブルの中身は次のとおりです。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
5 | 伊藤美咲 | 28 | misaki@example.com
4. COUNTで件数を数える
COUNTは、行の数を数えるための集約関数です。名簿に何人登録されているかを知りたいときに使います。COUNT(*)と書くことで、すべての行を対象に数えます。
SELECT COUNT(*)
FROM users;
count
-----
5
この結果から、usersテーブルには5人分のデータがあることが分かります。紙の名簿を一人ずつ指で数える代わりに、SQLが一瞬で数えてくれます。
5. SUMで合計を計算する
SUMは、数値を合計する集約関数です。年齢の合計や、金額の合計などを計算するときに使います。ここでは、全員の年齢を足してみます。
SELECT SUM(age)
FROM users;
sum
-----
124
これは、全員の年齢を足した合計です。電卓で一人ずつ足し算をする必要はありません。SQLがまとめて計算してくれます。
6. AVGで平均を求める
AVGは、平均値を求める集約関数です。平均年齢を知りたいときなどに使います。平均とは、合計を人数で割った値のことです。
SELECT AVG(age)
FROM users;
avg
-----
24.8
この結果から、登録されている人たちの平均年齢が分かります。数字が小数になることもありますが、PostgreSQLが自動で計算してくれます。
7. 条件と一緒に集約関数を使う
集約関数は、条件と組み合わせて使うこともできます。例えば、20歳以上の人だけを対象に人数を数えたい場合です。WHEREを使うことで、対象を絞れます。
SELECT COUNT(*)
FROM users
WHERE age >= 20;
count
-----
4
このように、条件に合ったデータだけを集計できるのも、PostgreSQLの集約関数の便利な点です。
8. 集約関数を使うときのポイント
集約関数は、たくさんのデータを一つの結果にまとめるための仕組みです。そのため、結果は一行になることが多いです。COUNTは件数、SUMは合計、AVGは平均と、役割を覚えておくと迷いません。最初は「数える」「足す」「平均を出す」という身近な計算として考えると、SQLの集約関数はぐっと理解しやすくなります。