CodeGym /コース /SQL SELF /SUM()でデータを合計する — シンタックスと例

SUM()でデータを合計する — シンタックスと例

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

想像してみて…スーパーでめっちゃ長い買い物リストがあるとする。最終的にいくら使ったか知りたいよね。でも全部手で足し算なんてやってられないでしょ?でも店員さんたちは全部データベースに入れてるから、ちゃんと合計金額が書かれたレシートが出てくる。たぶん、そのアプリのどこかで今日の主役 SUM() 関数が活躍してるんだ!これは数値型カラムの値を合計してくれる集約関数だよ。

SUM()のシンタックス

SUM()関数は名前の通りシンプルだけど、細かく見てみよう:

SELECT SUM(カラム)
FROM テーブル;

この関数は指定したカラムの全ての値を合計してくれる。でも正直に言うと、テキストや日付を足し算する魔法はないよ!数値だけね。

SUM()の使い方例

まずはシンプルな例から始めよう。salariesテーブルを使うよ。これは社員の給料が入ってる:

employee_id salary
1 50000
2 60000
3 55000
4 75000

例1: 全社員の給料を合計する

会社の給料総額を知りたいときはこうやる:

SELECT SUM(salary) AS total_salary
FROM salaries;

結果:

total_salary
240000

何が起きた? PostgreSQLはsalaryカラムの値(50000 + 60000 + 55000 + 75000)を全部足して、新しいカラムtotal_salaryで返してくれた。

例2: 条件付きで合計する

例えば、給料が55,000より多い社員だけの合計を知りたいとき。おなじみのWHEREを使うよ:

SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;

結果:

high_salary_total
135000

ここで何が起きた? まずPostgreSQLはWHERE salary > 55000でフィルタして、60000と75000だけ残した。そのあとこの2つを足した(60000 + 75000)。

3. SUM()の特徴

NULLSUM()にどう影響する?さっきも見たけど、NULLは「何もない」って意味で、SUM()はそれを計算に入れない。こんなテーブルを見てみよう:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

給料総額を知りたいとき:

SELECT SUM(salary) AS total_salary
FROM salaries;

結果:

total_salary
185000

なんで「185000」で「NULL」じゃないの? PostgreSQLはNULLを合計から無視してるからだよ。

SUM()を使った複雑なクエリ例

例1: 合計とフィルタを同時にやる

salesテーブルがあるとする。これは売上データが入ってる。こんな構造:

product_id amount
1 150
2 200
3 NULL
1 100

1番目の商品(product_id = 1)だけの売上合計amountを知りたい:

SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;

結果:

total_sales
150

例2: 合計と追加計算

またsalariesテーブルで、給料総額が200,000をどれだけ超えてるか知りたい:

SELECT SUM(salary) - 200000 AS surplus
FROM salaries;

結果:

surplus
40000

SUM()でよくあるミス

SUM()を数値じゃないデータで使う:うっかりテキストとかを合計しようとするとエラーになるよ。カラムのデータ型はちゃんと確認しよう。

NULLを無視しちゃう:初心者はNULLも計算に入ると思いがちだけど、実は無視されるから、思わぬ結果になることもあるよ。

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