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

SQLでデータを取得し、プログラム側でデータを加工する処理は頻繁に行われます。

実は四則演算のような計算処理であれば、データを取得する際にSQLでまかなえてしまうことをご存知でしょうか。

今回はSQLのSELECT句で計算処理を行う方法について、ご紹介していきたいと思います。

ポテパンダの一言メモ

今回ご紹介するサンプルではMySQLというデータベースを利用しています。
データベース毎に利用可能な演算子が異なることもありますので、適宜ご利用のデータベースで提供されている機能に読み替えて実施してみてください。

SQLのSELECT句で計算してみよう!


SQLのSELECT句で四則演算を行う方法についてご紹介していきたいと思います。

MySQLではSQLで計算を行うために下記の算術演算子が利用可能です。

MySQLで利用可能な算術演算子
  • 「+」:加算
  • 「-」:減算
  • 「*」:乗算
  • 「/」:除算
  • 「DIV」:除算(整数値の返却)
  • 「&」:剰余
  • 「MOD」:剰余

「+」:加算

加算処理を行う際は四則演算で普段利用するように「+」記号を利用します。

使い方

SELECT A + B;

AとBには「整数」「浮動小数点数」のどちらも指定することが可能です。

サンプル

mysql> SELECT 1 + 2.56;
+----------+
| 1 + 2.56 |
+----------+
|     3.56 |
+----------+
1 row in set (0.00 sec)

「-」:減算

減算処理を行う際は「-」記号を利用します。

使い方

SELECT A - B;

Bの値がAよりも大きい場合にはマイナス値が出力されます。

サンプル

mysql> SELECT 1 - 2.56;
+----------+
| 1 - 2.56 |
+----------+
|    -1.56 |
+----------+
1 row in set (0.00 sec)

「*」:乗算

乗算処理を行う際は「*」記号を利用します。

使い方

SELECT A * B;

通常の四則演算では「×」を利用しますが、SQLの計算では「*」を利用します。

サンプル

マイナスの値と浮動小数点数を乗算するサンプルです。

mysql> SELECT -3 *  2.56;
+------------+
| -3 *  2.56 |
+------------+
|      -7.68 |
+------------+
1 row in set (0.00 sec)

「/」:除算

除算処理には2種類の方法が提供されており、まずは「/」を利用する方法をご紹介していきます。

使い方

SELECT A / B;

通常の四則演算で利用する「÷」ではなくSQLの計算では「/」を利用します。

サンプル

mysql> SELECT 100 / 3;
+---------+
| 100 / 3 |
+---------+
| 33.3333 |
+---------+
1 row in set (0.00 sec)

「DIV」:除算(整数値の返却)

除算処理のもう一つが「DIV」を利用した方法です。

使い方

SELECT A DIV B;

DIVを利用した場合、計算結果は整数部分のみが出力されます。

サンプル

mysql> SELECT 100 DIV 3;
+-----------+
| 100 DIV 3 |
+-----------+
|        33 |
+-----------+
1 row in set (0.00 sec)

「%」:剰余

剰余処理に関しても2種類の方法が提供されており、まずは「%」を利用した方法からご紹介していきます。

使い方

SELECT A % B;

サンプル

mysql> SELECT 100 % 3;
+---------+
| 100 % 3 |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)

「MOD」:剰余

剰余処理のもう一つが「MOD」を利用した方法です。

使い方

SELECT A MOD B;

「MOD」を利用した際と「/」を利用した結果は変わりません。

サンプル

mysql> SELECT 100 MOD 3;
+-----------+
| 100 MOD 3 |
+-----------+
|         1 |
+-----------+
1 row in set (0.00 sec)

テーブルから取得したデータをSQL上で計算する!


基本的なSQLでの計算方法について上述してきましたが、もちろんテーブルから取得したデータに対して計算を行うことも可能です。

ここからはそれぞれの算術演算をテーブルから取得したデータが実施してみましょう。

サンプルデータ

今回はサンプルデータとして「calculation」テーブルを下記の内容で作成しています。

calculation

+------+------+
| col1 | col2 |
+------+------+
|    1 | 2.56 |
|  100 | 8.47 |
|   -5 | 15.1 |
|   10 | -5.4 |
+------+------+

サンプル

では実際に、それぞれの四則演算処理をテーブルのデータを利用して、実行した結果を確認していきましょう。

基本的な記述方法は下記の通りです。

SELECT [計算式] FROM テーブル名;
ポテパンダの一言メモ

サンプルでは計算元のデータを分かりやすくするために、それぞれのカラムのデータを表示するようにしています。

「+」:加算

mysql> SELECT col1, col2, col1 + col2 FROM calculation;
+------+------+-------------+
| col1 | col2 | col1 + col2 |
+------+------+-------------+
|    1 | 2.56 |        3.56 |
|  100 | 8.47 |      108.47 |
|   -5 | 15.1 |        10.1 |
|   10 | -5.4 |         4.6 |
+------+------+-------------+
4 rows in set (0.00 sec)

「-」:減算

mysql> SELECT col1, col2, col1 - col2 FROM calculation;
+------+------+-------------+
| col1 | col2 | col1 - col2 |
+------+------+-------------+
|    1 | 2.56 |       -1.56 |
|  100 | 8.47 |       91.53 |
|   -5 | 15.1 |       -20.1 |
|   10 | -5.4 |        15.4 |
+------+------+-------------+
4 rows in set (0.00 sec)

「*」:乗算

mysql> SELECT col1, col2, col1 * col2 FROM calculation;
+------+------+-------------------+
| col1 | col2 | col1 * col2       |
+------+------+-------------------+
|    1 | 2.56 |              2.56 |
|  100 | 8.47 | 847.0000000000001 |
|   -5 | 15.1 |             -75.5 |
|   10 | -5.4 |               -54 |
+------+------+-------------------+
4 rows in set (0.00 sec)

「/」:除算

mysql> SELECT col1, col2, col1 / col2 FROM calculation;
+------+------+----------------------+
| col1 | col2 | col1 / col2          |
+------+------+----------------------+
|    1 | 2.56 |             0.390625 |
|  100 | 8.47 |   11.806375442739078 |
|   -5 | 15.1 | -0.33112582781456956 |
|   10 | -5.4 |  -1.8518518518518516 |
+------+------+----------------------+
4 rows in set (0.00 sec)

「DIV」:除算

mysql> SELECT col1, col2, col1 DIV col2 FROM calculation;
+------+------+---------------+
| col1 | col2 | col1 DIV col2 |
+------+------+---------------+
|    1 | 2.56 |             0 |
|  100 | 8.47 |            11 |
|   -5 | 15.1 |             0 |
|   10 | -5.4 |            -1 |
+------+------+---------------+
4 rows in set (0.00 sec)

「&」:剰余

mysql> SELECT col1, col2, col1 % col2 FROM calculation;
+------+------+-------------------+
| col1 | col2 | col1 % col2       |
+------+------+-------------------+
|    1 | 2.56 |                 1 |
|  100 | 8.47 | 6.829999999999993 |
|   -5 | 15.1 |                -5 |
|   10 | -5.4 |               4.6 |
+------+------+-------------------+
4 rows in set (0.00 sec)

「MOD」:剰余

mysql> SELECT col1, col2, col1 MOD col2 FROM calculation;
+------+------+-------------------+
| col1 | col2 | col1 MOD col2     |
+------+------+-------------------+
|    1 | 2.56 |                 1 |
|  100 | 8.47 | 6.829999999999993 |
|   -5 | 15.1 |                -5 |
|   10 | -5.4 |               4.6 |
+------+------+-------------------+
4 rows in set (0.00 sec)

さいごに:SQLのSELECT句で計算処理を実施してみよう!


本記事ではSQLのSELECT句で計算処理を行う方法についてご紹介してきました。

計算はプログラム側ですべて行っていた方も、SQL取得時にデータ加工まで行うことは可能です。

状況によりけりではありますが、データ取得以外は全てプログラム側で行うと決めつけるのではなく、SQLで計算処理が行えることも考慮した上で最適な方法を選択出来るよう実装していきましょう。

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

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

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

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

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

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

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

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

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

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

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