PR

【SQL】SUM関数(SELECT SUM)を1分でわかりやすく解説

Database

SQLにおける集約関数の1つ―。SUM関数の使い方を初心者向けにわかりやすく1から解説します。

参考 SQLとは?

SUM関数は指定したカラムのレコードの合計を取得します。

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

このページではSQLにおけるSUM関数の利用方法・構文ルールを初心者向けにご説明します。

このページで学べる内容
  • SUM関数の使い方・構文ルール
  • GROUP BY句を利用した集計方法

プログラマーやシステムエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。

スポンサーリンク

SQL:SUM関数の使い方・構文ルール

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

SUM関数はCOUNT関数を始めとする他の集約関数と「同様の構文ルール」で利用することができます。

ここでは以下のようなテーブルを例にSUM関数の利用方法と処理結果を見ていきます。

成績の一覧テーブルから、Japanaeseカラムの合計値を取得したい場合は以下のように記述します。

SELECT SUM(Japanese) FROM PointList;

-- 結果は「360」

COUNT関数と同様に、複数のカラムを指定して合計値を取得することも可能です。

SELECT SUM(Japanese),SUM(Math)
  FROM PointList;

-- SUM「360」/ SUM「3600」

SUM関数では必ずカラムを指定する必要があり、ワイルドカード*を使用することはできません。

SELECT SUM(*) FROM PointList;

-- SUM関数の引数には「*」を利用することはできません

NULL値の扱い

SUM関数では、合計を取得する際にNULL値を除外して計算してくれます。

仮に以下のようなテーブルが存在する場合にSUM関数を利用するとどうなるか?

SUM関数は、計算の前にNULLを除外し、その後で合計を計算するため結果は以下のようになります。

SELECT SUM(Japanese),SUM(Math),SUM(English)
  FROM PointList;

-- SUM「10」/ SUM「100」/ SUM「10」

GROUP BY句との合わせ技

SUM関数は "GROUP BY" 句と併用して利用することが可能。一般的なシステムでSUM関数が用いられる場合は "GROUP BY" 句と同時に用いられることが非常に多いため、この使い方も併せて理解しておくと良いでしょう。

先ほどのPointListテーブルに性別を示すカラムを追加して考えてみましょう。

GROUP BY句にFM列を指定して実行した結果がこちら。

SELECT FM, SUM(Japanese)
  FROM PointList
 GROUP BY FM;

/* 実行結果
  +----------+-----------+
  | FM       | SUM       |
  +----------+-----------+
  | 男       | 10        |
  | 女       | 350       |
  +----------+-----------+
*/

ご覧のように、指定したグループごとに結果を取得してくれます。

SUM関数のまとめ
  • SUM関数は指定したカラムの合計値を取得できる
  • NULLは除外して計算される
SELECT SUM(Japanese) FROM PointList;

-- 結果は「360」
  • GROUP BY句と組み合わせて利用することでグループごとに合計値を取得することが可能
SELECT FM, SUM(Japanese)
  FROM PointList
 GROUP BY FM;

/* 実行結果
  +----------+-----------+
  | FM       | SUM       |
  +----------+-----------+
  | 男       | 10        |
  | 女       | 350       |
*/

より実践的なサンプルコード

-- テーブルの作成
CREATE TABLE sales (
    id INT PRIMARY KEY,
    product_name VARCHAR(255),
    category VARCHAR(255),
    sales_amount INT
);

-- データの挿入
INSERT INTO sales (id, product_name, category, sales_amount)
VALUES (1, 'Product A', 'Electronics', 100);

INSERT INTO sales (id, product_name, category, sales_amount)
VALUES (2, 'Product B', 'Electronics', 150);

INSERT INTO sales (id, product_name, category, sales_amount)
VALUES (3, 'Product C', 'Furniture', NULL);

INSERT INTO sales (id, product_name, category, sales_amount)
VALUES (4, 'Product D', 'Furniture', 200);

INSERT INTO sales (id, product_name, category, sales_amount)
VALUES (5, 'Product E', 'Electronics', 50);

-- sales_amount の合計を取得
SELECT SUM(sales_amount) FROM sales;

-- 結果→ 500

-- sales_amount の合計を category ごとに取得
SELECT category, SUM(sales_amount)
FROM sales
GROUP BY category;

/* 結果
category     | sum
-------------|-----
Electronics  | 300
Furniture    | 200
-------------|-----
*/

参考 CREATE TABLE / INSERT

SQLを1から学習したい方は

SQLやデータベースの仕組みを1から学習したい方(学び直したい方)向けに、現役エンジニア達のスキルを結集して 完全無料 のSQL教材を作成しました。

SQLは決して難しい技術ではないので、エンジニアであれば「当たり前のように」扱えて当然かも・・・?

とはいえ、案外SQLをちゃんと使ったことがない人も多いはずです。この機会に是非一度ご覧になってみてください。

システムエンジニアを目指したい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
DatabaseIT-Skills
シェアする
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました