Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLで足し算する方法

この記事では、SQLで数値や文字列を足し算する方法について解説します。

足し算をするには、主に次の2つを用いましょう。

  1. +(プラス)演算子を使う
  2. SUM関数を使う

それぞれの方法について、詳しく解説します。

(1)+演算子を使う

まずは、+演算子を使う方法です。

+演算子は、算数や数学などで使っているので、使い方はわかる人が多いと思います。

使い方は次の通りです。

  1. SELECT + 値;

では、実際にSQLを操作して確認してみます。

次のように記述すると、数値同士の足し算が行われます。

  1. mysql> SELECT 10 + 20;
  2. +---------+
  3. | 10 + 20 |
  4. +---------+
  5. | 30 |
  6. +---------+
  7. 1 row in set (0.00 sec)

このように、足し算がちゃんと行われていることがわかりますね。

 

足し算以外にも、算術演算子を用いることで、引き算・掛け算・割り算も可能です。

  1. mysql> SELECT 10 - 20;
  2. +---------+
  3. | 10 - 20 |
  4. +---------+
  5. | -10 |
  6. +---------+
  7. 1 row in set (0.04 sec)
  8.  
  9. mysql> SELECT 10 * 20;
  10. +---------+
  11. | 10 * 20 |
  12. +---------+
  13. | 200 |
  14. +---------+
  15. 1 row in set (0.00 sec)
  16.  
  17.  
  18. mysql> SELECT 10 / 20;
  19. +---------+
  20. | 10 / 20 |
  21. +---------+
  22. | 0.5000 |
  23. +---------+
  24. 1 row in set (0.01 sec)

足し算も含めた簡単な演算を行いたい場合は、算術演算子を使いましょう!

(2)SUM関数を使う

次は、SUM関数を使う方法です。

SUM関数は、指定したカラムの合計を求める場合に使います。

記述方法は、次の通りです。

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

合計を求めたいカラム名をかっこに記述します。

実際に、テーブルを用意して足し算してみましょう。

  1. mysql> SELECT * FROM sample_table;
  2. +------+----------+-------+
  3. | id | name | score |
  4. +------+----------+-------+
  5. | 1 | Shimizu | 67 |
  6. | 2 | Ishikawa | 90 |
  7. | 3 | Minami | 127 |
  8. | 4 | Katou | 145 |
  9. | 5 | Date | 88 |
  10. +------+----------+-------+
  11. 5 rows in set (0.01 sec)

上記テーブルの scoreテーブル の値を足し算してみます。

次のように記述しましょう。

  1. SELECT SUM(score) FROM sample_table;

上記SQL文を実行すると、次の結果を取得できます。

  1. mysql> SELECT SUM(score) FROM sample_table;
  2. +------------+
  3. | SUM(score) |
  4. +------------+
  5. | 517 |
  6. +------------+
  7. 1 row in set (0.03 sec)

算術演算子を使うよりも、簡単に足し算ができますよね。

足し算する時に条件を設定する

SQLで足し算を行う基本的な操作方法を紹介しました。

「足し算をする時に、条件を設定したい」なんて場合もありますよね。

SUM関数を使うことで、条件をつけて足し算を行うことも可能です。

例えば、scoreカラム の値が100以上のデータだけ足し算するように指定してみます。

次のように記述しましょう。

  1. SELECT SUM(score) FROM sample_table WHERE score >= 100;

上記のSQL文を実行することで、条件に沿った足し算が行われます。

今回のテーブルで言えば、127と145が条件に当てはまりますね。

実行結果は次の通りです。

  1. mysql> SELECT SUM(score) FROM sample_table WHERE score >= 100;
  2. +------------+
  3. | SUM(score) |
  4. +------------+
  5. | 272 |
  6. +------------+
  7. 1 row in set (0.01 sec)

期待した通りの結果が取得できています。

足し算を行でする

カラムごとに値を足し算する方法を解説してきました。

中には、あるカラムと別のカラムの値を足し算したいこともあるでしょう。

行内の値を足し算する方法について見ていきましょう。

先ほどサンプルで使用した sample_tableテーブル のカラムを追加しました。

  1. +------+----------+-------+---------+
  2. | id | name | score | score02 |
  3. +------+----------+-------+---------+
  4. | 1 | Shimizu | 67 | 90 |
  5. | 2 | Ishikawa | 90 | 114 |
  6. | 3 | Minami | 127 | 101 |
  7. | 4 | Katou | 145 | 163 |
  8. | 5 | Date | 88 | 123 |
  9. +------+----------+-------+---------+
  10. 5 rows in set (0.01 sec)

このテーブルを元に、scoreカラム と score02カラム の値を足し算してみます。

SQL文は次のように記述しましょう。

  1. SELECT id, name, score + score02 AS total FROM sample_table;

それぞれのカラムを +演算子 で足せばOKです。

わかりやすいように、足し算したカラムは totalカラム として、別名をつけています。

上記SQL文を実行すると、次のように結果を取得できます。

  1. mysql> SELECT id, name, score + score02 AS total FROM sample_table;
  2. +------+----------+-------+
  3. | id | name | total |
  4. +------+----------+-------+
  5. | 1 | Shimizu | 157 |
  6. | 2 | Ishikawa | 204 |
  7. | 3 | Minami | 228 |
  8. | 4 | Katou | 308 |
  9. | 5 | Date | 211 |
  10. +------+----------+-------+
  11. 5 rows in set (0.00 sec)

それぞれのデータで、カラムの値が足し算できています!

行の特定カラムの値を足し算したい場合は、+演算子を使いましょう。

足し算するデータにNULLが含まれている場合

「SQLで足し算するカラムの中に、NULL値が含まれているとどうなるのでしょうか?」

「NULL値がある場合は、NULLを除いて足し算が行われます。ただし、足し算を行でする場合は、結果がNULL値として返ります。」

足し算するデータにNULLが含まれている場合も、実際にデータを操作して確認してみます。

sample_tableテーブルに、NULL値を含んだデータを追加しました。

  1. mysql> SELECT * FROM sample_table;
  2. +------+----------+-------+---------+
  3. | id | name | score | score02 |
  4. +------+----------+-------+---------+
  5. | 1 | Shimizu | 67 | 90 |
  6. | 2 | Ishikawa | 90 | 114 |
  7. | 3 | Minami | 127 | 101 |
  8. | 4 | Katou | 145 | 163 |
  9. | 5 | Date | 88 | 123 |
  10. | 6 | Tanaka | NULL | 0 |
  11. +------+----------+-------+---------+
  12. 6 rows in set (0.00 sec)

このテーブルを用いて、カラムごとの足し算を行ってみると、次の結果を取得できます。

  1. mysql> SELECT SUM(score), SUM(score02) FROM sample_table;
  2. +------------+--------------+
  3. | SUM(score) | SUM(score02) |
  4. +------------+--------------+
  5. | 517 | 591 |
  6. +------------+--------------+
  7. 1 row in set (0.00 sec)

NULL値は特に検索結果に影響を与えず、ちゃんと足し算できているのがわかります。

また、0も同様に足し算結果に問題はありません。

 

一方、足し算を行でする場合は、次のようにNULL値を含んでいる場合は、結果がNULL値になっています。

  1. mysql> SELECT score + score02 FROM sample_table;
  2. +-----------------+
  3. | score + score02 |
  4. +-----------------+
  5. | 157 |
  6. | 204 |
  7. | 228 |
  8. | 308 |
  9. | 211 |
  10. | NULL |
  11. +-----------------+
  12. 6 rows in set (0.00 sec)

このように、行で足し算する場合は、足し算結果がNULLになることもあるので注意しましょう。

NULL値がある場合には、足し算をしないで結果を返したくない」という場合は、次のように条件を設定するのがおすすめです。

  1. mysql> SELECT score + score02 FROM sample_table WHERE score IS NOT NULL AND score02 IS NOT NULL;
  2. +-----------------+
  3. | score + score02 |
  4. +-----------------+
  5. | 157 |
  6. | 204 |
  7. | 228 |
  8. | 308 |
  9. | 211 |
  10. +-----------------+
  11. 5 rows in set (0.04 sec)

上記のSQLを実行することで、NULL値を含んだデータは除いて取得できます。

覚えておくと便利でしょう。

NULL値を判定する関数については、以下の記事で詳しく解説しているので、参考にしてください!

【関連記事】

▶︎SQLのNULL比較にはIS NULL演算子を使う ストアドファンクションでも同様

文字列を足し算するにはCONCAT関数を使う

SQLで文字列の足し算(連結)を行う場合は、CONCAT関数を使いましょう。

次のように記述します。

  1. SELECT CONCAT('文字列1', '文字列2', …);

例えば、次のような形で単語を複数連結可能です。

  1. mysql> SELECT CONCAT('potepan', 'style');
  2. +----------------------------+
  3. | CONCAT('potepan', 'style') |
  4. +----------------------------+
  5. | potepanstyle |
  6. +----------------------------+
  7. 1 row in set (0.02 sec)

テーブルのデータ同士を連結することもできます。

  1. mysql> SELECT * FROM sample_table2;
  2. +------+--------+--------+
  3. | id | word01 | word02 |
  4. +------+--------+--------+
  5. | 1 | apple | orange |
  6. | 2 | excel | word |
  7. | 3 | Tokyo | Osaka |
  8. +------+--------+--------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT CONCAT(word01, word02) FROM sample_table2;
  12. +------------------------+
  13. | CONCAT(word01, word02) |
  14. +------------------------+
  15. | appleorange |
  16. | excelword |
  17. | TokyoOsaka |
  18. +------------------------+
  19. 3 rows in set (0.01 sec)

文字列を足し算したい場合は、CONCAT関数を使いましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。