【SQL入門編④】集約関数を使ってみよう!

【SQL入門編④】集約関数を使ってみよう!

皆さんは、次のような値を知りたいと思ったことはありませんか?

  • 自社サービス利用者の平均年齢や一番若い人の年齢
  • 直近1週間のユーザー登録数の合計
  • 過去最高の売上額


今回は、そんな願いを叶える「集約関数」について勉強します!

集約関数とは

集約関数とは、

あるカラムの値を集めて、一つの集約値を出す関数

のことです。

これだけだと何じゃらほいって感じですが、
具体的には、以下のようなものをすべて集約関数といいます!

COUNT関数 → あるカラムの値を集めて、その値の個数を算出

SUM関数 → あるカラムの値を集めて、その値の合計を算出

AVG関数 → あるカラムの値を集めて、その値の平均を算出

MAX関数 → あるカラムを集めて、その値の中で最も大きい値を算出

MIN関数 → あるカラムを集めて、その値の中で最も小さい値を算出

集約関数の使い方

集約関数は、以下のようにSELECT句で使います。

SELECT
    集約関数(カラム名)
FROM
    テーブル名
WHERE
    絞り込み条件

今回も、毎度おなじみusersテーブルを元に、それぞれの集約関数の使い方をご説明します!

idnamegenderagecreated_at
1太郎男性402022-1-1 12:20:48
2よしお男性312022-1-1 15:40:39
3SAKI女性342022-1-2 06:00:21
4れいか女性302022-1-3 10:00:40
5マイケル男性292022-1-3 10:06:01
usersテーブル

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つを覚えておけば十分です!

それでは、最後に練習問題を解いてみましょう!

練習問題

idnamegenderagecreated_at
1太郎男性402022-1-1 12:20:48
2よしお男性312022-1-1 15:40:39
3SAKI女性342022-1-2 06:00:21
4れいか女性302022-1-3 10:00:40
5マイケル男性292022-1-3 10:06:01
usersテーブル

練習問題①

上記のusersテーブルから、男性の人数を算出するクエリを書いてください。

練習問題②

上記のusersテーブルから、一番最近登録したユーザーの登録日を算出するクエリを書いてください。

ここまで読んでいただき、ありがとうございました!
それでは、また次の記事でお会いできるのを楽しみにしております(^^)/

-SQL
-, , , , , ,