皆さんは、次のような値を知りたいと思ったことはありませんか?
- 自社サービス利用者の平均年齢や一番若い人の年齢
- 直近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テーブルから、一番最近登録したユーザーの登録日を算出するクエリを書いてください。
ここまで読んでいただき、ありがとうございました!
それでは、また次の記事でお会いできるのを楽しみにしております(^^)/