MySQLのSUMとは?WHEREやIFNULL・GROUPBYとの組合せ

MySQLでのSUMの使い方とは?
今回は、MySQLでのSUMの使い方について説明します。
SUMは指定カラムの合計値を計算します。ここでは、SUMの基本的な使い方、WHEREとの組合せ、IFNULLとの組合せ、GROUP BYとの組合せについて紹介します。また、複数カラムのSUMの方法についても紹介します。
MySQLでのファイル名取得に興味のある方はぜひご覧ください。
基本的な使い方
MySQLでのSUMの基本的な使い方を紹介します。SUMは指定カラムの合計値を計算します。今回は、以下のscore_table1を作成します。
1
2
3
4
5
6
7
|
CREATE TABLE score_table1(user_id int, name varchar(20), subject_id int, score int);
INSERT INTO score_table1 VALUES(1, 'taro', 1, 56);
INSERT INTO score_table1 VALUES(1, 'taro', 2, 67);
INSERT INTO score_table1 VALUES(2, 'jiro', 1, 54);
INSERT INTO score_table1 VALUES(2, 'jiro', 2, 76);
INSERT INTO score_table1 VALUES(3, 'saburo', 1, 98);
INSERT INTO score_table1 VALUES(3, 'saburo', 2, 87);
|
score_table1をSELECTすると、以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
|
mysql> SELECT * FROM score_table1;
+---------+--------+------------+-------+
| user_id | name | subject_id | score |
+---------+--------+------------+-------+
| 1 | taro | 1 | 56 |
| 1 | taro | 2 | 67 |
| 2 | jiro | 1 | 54 |
| 2 | jiro | 2 | 76 |
| 3 | saburo | 1 | 98 |
| 3 | saburo | 2 | 87 |
+---------+--------+------------+-------+
|
それでは、カラム指定でSUMを使ってみます。以下のように使います。
1
2
3
4
5
6
|
mysql> SELECT SUM(score) FROM score_table1;
+------------+
| SUM(score) |
+------------+
| 438 |
+------------+
|
scoreカラムの合計値が計算されていることが分かります。
WHERE
MySQLでは、SUMとWHEREを組み合わせて、条件指定で合計値を計算できます。それでは実際のコマンドを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
mysql> SELECT SUM(score) FROM score_table1 WHERE user_id = 1;
+------------+
| SUM(score) |
+------------+
| 123 |
+------------+
mysql> SELECT SUM(score) FROM score_table1 WHERE subject_id = 2;
+------------+
| SUM(score) |
+------------+
| 230 |
+------------+
|
このようにMySQLでは、SUMとWHEREを組み合わせて、条件指定で合計値を計算できます。
IFNULL
MySQLで、SUMとIFNULLを組み合わせる方法を紹介します。例えば、WHERE句で一致するデータがない場合、SUMの結果はNULLになります。
1
2
3
4
5
6
|
mysql> SELECT SUM(score) FROM score_table1 WHERE user_id > 3;
+------------+
| SUM(score) |
+------------+
| NULL |
+------------+
|
IFNULLを付与することで、NULLであれば指定の数字を返せます。
1
2
3
4
5
6
|
mysql> SELECT IFNULL(SUM(score), 0) AS “SUM(score)” FROM score_table1 WHERE user_id > 3;
+------------+
| SUM(score) |
+------------+
| 0 |
+------------+
|
GROUP BY
MySQLで、SUMとGROUP BYを組み合わせる方法を紹介します。指定カラムで合計ができます。実際のコマンドを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
mysql> SELECT subject_id,SUM(score) FROM score_table1 GROUP BY subject_id;
+------------+------------+
| subject_id | SUM(score) |
+------------+------------+
| 1 | 208 |
| 2 | 230 |
+------------+------------+
mysql> SELECT user_id,SUM(score) FROM score_table1 GROUP BY user_id;
+---------+------------+
| user_id | SUM(score) |
+---------+------------+
| 1 | 123 |
| 2 | 130 |
| 3 | 185 |
+---------+------------+
|
複数カラムのSUM
MySQLで、複数カラムの合計値を計算する方法を紹介します。ここでは、以下のscore_table2を作成します。
1
2
3
4
|
CREATE TABLE score_table2(user_id int, name varchar(20), japanese int, english int, mathematics int);
INSERT INTO score_table2 VALUES(1, 'taro', 56, 67, 78);
INSERT INTO score_table2 VALUES(2, 'jiro', 76, 85, 84);
INSERT INTO score_table2 VALUES(3, 'saburo', 34, 65, 45);
|
score_table2をSELECTすると、以下のようになります。
1
2
3
4
5
6
7
8
|
mysql> SELECT * FROM score_table2;
+---------+--------+----------+---------+-------------+
| user_id | name | japanese | english | mathematics |
+---------+--------+----------+---------+-------------+
| 1 | taro | 56 | 67 | 78 |
| 2 | jiro | 76 | 85 | 84 |
| 3 | saburo | 34 | 65 | 45 |
+---------+--------+----------+---------+-------------+
|
カラム別に合計値を計算するには以下のようにします。
1
2
3
4
5
6
|
mysql> SELECT SUM(japanese), SUM(english), SUM(mathematics) FROM score_table2;
+---------------+--------------+------------------+
| SUM(japanese) | SUM(english) | SUM(mathematics) |
+---------------+--------------+------------------+
| 166 | 217 | 207 |
+---------------+--------------+------------------+
|
これらの合計値をさらに合計するには、以下のようにします。
1
2
3
4
5
6
|
mysql> SELECT SUM(japanese) + SUM(english) + SUM(mathematics) AS total FROM score_table2;
+-------+
| total |
+-------+
| 590 |
+-------+
|
まとめ
いかがでしたでしょうか。ここでは、MySQLでのSUMの基本的な使い方やWHEREとの組合せ、IFNULLとの組合せ、GROUP BYとの組合せ、また複数カラムのSUMの方法についても紹介しました。
ぜひご自身でMySQLのコマンドを書いて、理解を深めてください。
FEnetを運営しているネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


MySQL新着案件New Job
-
サーバ構築・運用設計/東京都渋谷区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅勤務
年収588万~588万円東京都渋谷区(渋谷駅) -
【高額年収】/基盤運用保守/東京都千代田区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅勤務
年収600万~720万円東京都千代田区(溜池山王駅) -
【高額年収】/国内クラウドシステムのサーバ運用保守/東京都新宿区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅勤務
年収600万~720万円東京都新宿区(東新宿駅) -
国内クラウドシステムのサーバ構築のテスター/東京都新宿区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅勤務
年収300万~420万円東京都新宿区(東新宿駅) -
【高額年収】/社内情報システムインフラ運用保守/Windows/東京都多摩北部/【WEB面談可】/在宅勤務/20代~30代の方活躍中
年収600万~720万円東京都多摩北部(-駅) -
社内情報システムインフラ構築のテスター/Windows/東京都多摩北部/【WEB面談可】/在宅勤務/20代~30代の方活躍中
年収300万~420万円東京都多摩北部(-駅)