皆さんは、次のような値を知りたいと思ったことはありませんか?
- 自社サービス利用者の平均年齢や一番若い人の年齢
- 直近1週間のユーザー登録数の合計
- 過去最高の売上額
今回は、そんな願いを叶える「集約関数」について勉強します!
集約関数とは
集約関数とは、
あるカラムの値を集めて、一つの集約値を出す関数
のことです。
これだけだと何じゃらほいって感じですが、
具体的には、以下のようなものをすべて集約関数といいます!
COUNT関数 → あるカラムの値を集めて、その値の個数を算出
SUM関数 → あるカラムの値を集めて、その値の合計を算出
AVG関数 → あるカラムの値を集めて、その値の平均を算出
MAX関数 → あるカラムを集めて、その値の中で最も大きい値を算出
MIN関数 → あるカラムを集めて、その値の中で最も小さい値を算出
集約関数の使い方
集約関数は、以下のようにSELECT句で使います。
SELECT
集約関数(カラム名)
FROM
テーブル名
WHERE
絞り込み条件今回も、毎度おなじみusersテーブルを元に、それぞれの集約関数の使い方をご説明します!
| id | name | gender | age | created_at |
|---|---|---|---|---|
| 1 | 太郎 | 男性 | 40 | 2022-1-1 12:20:48 |
| 2 | よしお | 男性 | 31 | 2022-1-1 15:40:39 |
| 3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
| 4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
| 5 | マイケル | 男性 | 29 | 2022-1-3 10:06:01 |
COUNT関数
COUNT関数とは、あるカラムの値を集めて、個数を算出する関数です。
COUNTとは、「数える」という意味ですね。
例えば、以下のクエリを書くとします。
SELECT
COUNT(age)
FROM
usersこのクエリを実行すると、usersテーブル内のageカラムの値の個数が数えられるので、「5」という値が返ってきます。
ちなみに、前回の記事で、WHERE句でテーブルを絞り込めることを勉強しましたね。
以下のクエリの場合、WHERE句によって、男性のレコード(計3行)のみ絞り込まれます。
そのため、このクエリの実行結果は「3」という値が返ってきます。
SELECT
COUNT(age)
FROM
users
WHERE
gender = "男性"SUM関数
SUM関数とは、あるカラムの値を集めて、合計を算出する関数です。
SUMとは「合計」という意味ですね。
SELECT
SUM(age)
FROM
users上記のクエリを実行すると、usersテーブルのageカラムの値が合計され、「164」という値が返ってきます。
ポイント
COUNT関数とSUM関数は混乱しやすいので、それぞれの区別を意識しましょう!
AVG関数
AVG関数とは、あるカラムの値を集めて、平均を算出する関数です。
AVGとは「AVERAGE」という英語の略で、「平均」という意味ですね。
SELECT
AVG(age)
FROM
users上記のクエリを実行すると、ageカラムの値が集められ、その平均が算出されます。
そのため、「32.8」という値が返ってきます。
MAX関数
MAX関数とは、あるカラムの値を集めて、その中で最大値を算出する関数です。
MAXとは「MAXIMUM」の略で、「最大」という意味ですね。
SELECT
MAX(age)
FROM
users上記のクエリを実行すると、ageカラムの値が集められ、その中での最大値が算出されます。
そのため、「40」という値が返ってきます。
ちなみに、例えば以下のようにテーブルを絞り込んだとします。
SELECT
MAX(age)
FROM
users
WHERE
gender = "女性"この場合、usersテーブルのレコードが、2人の女性ユーザーのみに絞られます。
結果、その中のageカラムの最大値である「34」が算出されます。
MIN関数
MIN関数とは、あるカラムの値を集めて、その中で最大値を算出する関数です。
MINとは「MINIMUM」の略で、「最小」という意味ですね。
SELECT
MIN(age)
FROM
users上記のクエリを実行すると、ageカラムの値が集められ、その中での最小値が算出されます。
そのため、「29」という値が返ってきます。
集約関数は、上記で紹介した以外にもたくさんありますが、実際のビジネスでは主に上記5つを覚えておけば十分です!
それでは、最後に練習問題を解いてみましょう!
練習問題
| id | name | gender | age | created_at |
|---|---|---|---|---|
| 1 | 太郎 | 男性 | 40 | 2022-1-1 12:20:48 |
| 2 | よしお | 男性 | 31 | 2022-1-1 15:40:39 |
| 3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
| 4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
| 5 | マイケル | 男性 | 29 | 2022-1-3 10:06:01 |
練習問題①
上記のusersテーブルから、男性の人数を算出するクエリを書いてください。
練習問題②
上記のusersテーブルから、一番最近登録したユーザーの登録日を算出するクエリを書いてください。
ここまで読んでいただき、ありがとうございました!
それでは、また次の記事でお会いできるのを楽しみにしております(^^)/