CodeGym /コース /SQL SELF /集約関数へのイントロ

集約関数へのイントロ

SQL SELF
レベル 7 , レッスン 0
使用可能

集約関数…こいつらはデータ分析の世界のマジシャンだよ!何百万行ものデータをギュッとまとめて分かりやすい結果にしてくれる。カウントしたり、最小値・最大値を探したり、平均を出したり、いろんなことができるんだ。じゃあ、順番に見ていこう!

集約関数っていうのは、SQLの特別な関数で、複数行のデータに対して操作して、ひとつの結果を返してくれるやつ。たとえば、朝のコーヒーの統計を全部集める感じ。たとえば:一週間で何杯飲んだか、砂糖を入れたか、何日連続でクリームを入れたか、みたいな。

集約関数で解決できる課題の例:

  • テーブル内の全レコード数をカウントする。
  • 数値カラムの最小値や最大値を見つける。
  • カラムの値を合計する。
  • カラムの値の平均を出す。
  • ユニークな値を抽出する。

「裏側」でどう動いてるの?

SQLはSELECTでデータを取得した後に集約関数を実行するんだ。たとえばSUM()AVG()を指定したら、まずデータを集めて、その選ばれた行だけで計算してくれる。

PostgreSQLの主な集約関数

じゃあ実際に使ってみよう!トップ5のヒーローたちを紹介するね:

  1. COUNT() — 行数をカウントする。
  2. SUM() — 数値カラムの値を合計する。
  3. AVG() — 平均値を計算する。
  4. MIN() — 最小値を見つける。
  5. MAX() — 最大値を見つける。

集約関数の使い方例

  1. COUNT()で行数をカウント

COUNT()関数は、テーブル内の全行数や、特定カラムのNULLじゃない値の数をカウントできるよ。

例:studentsテーブルがあって、学生の情報が入ってるとする:

id name age grade
1 Otto Art 20 85
2 Maria Chi 22 90
3 Alex Lin 21 78
4 Anna Song 23 NULL

学生の総数をカウントしてみよう:

SELECT 
    COUNT(*) AS total_students
FROM students;

結果:

total_students
4

今度はgradeが入ってる学生の数をカウントしてみよう:

SELECT 
    COUNT(grade) AS students_with_grades
FROM students;

結果:

students_with_grades
3

なんでこうなるの?それはCOUNT(column)NULLを無視するからだよ。

  1. SUM()で合計を出す

SUM()関数は、数値カラムの全値を合計するのに使うよ。

例:学生たちの合計点数を出してみよう。

SELECT 
    SUM(grade) AS total_grades
FROM students;

結果:

total_grades
253

メモ:カラムにNULLがあっても、合計には無視されるよ。

  1. AVG()で平均値を出す

AVG()関数は、カラム内の数値データの平均を計算するよ。

例:学生の平均点を計算してみよう。

SELECT 
    AVG(grade) AS average_grade
FROM students;

結果:

average_grade
84.33

気づいたかもだけど、NULLはまた無視されてる。

  1. MIN()MAX()で最小・最大値を探す

一番小さい値や一番大きい値を探したいときは、MIN()MAX()を使うよ。

例:一番若い学生と一番年上の学生を探してみよう。

SELECT 
    MIN(age) AS youngest_student, 
    MAX(age) AS oldest_student
FROM students;

結果:

youngest_student oldest_student
20 23

これらの関数については、また次のレクチャーで詳しく話すね。

NULLと仲良くなろう

NULLについては今度別でレクチャーするけど、ざっくり言うとNULLは「値がない」ってこと。何もない。空っぽ。ゼロみたいなもん!

たとえば、studentsテーブルがあって、学生の情報が入ってるとする:

id name age grade hobbie
1 Otto Art 20 85
2 Maria Chi 22 90 ダンス
3 Alex Lin 21 78
4 Anna Song 23

名前と年齢は必ずあるけど、成績や趣味はない場合もある。もしテーブルのセルに何も入ってなかったら、それはNULLが入ってるって言うんだ。NULLは数字でも文字列でもなくて、「どんな値もない」っていう特別なコードだよ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION