このエントリーをはてなブックマークに追加


SELECT句で四則演算を行う

SELECTで取得したあと、プログラム側で四則演算をする必要はありませんよ。
SELECT文で四則演算してしまう方法があります。
つまり計算はデータベース側に任せてしまって、プログラム側はデータベースから返却された値をそのまま利用することができます。
以下に実際に行った使用例を記します。

使用環境

以下の環境で動作確認を行いました。

  • OS
$ lsb_release -d
Description:    Ubuntu 12.04.4 LTS
  • データベース
$ psql -c 'select version();'
                                               version
------------------------------------------------------------------------------------------------------
 PostgreSQL 9.1.12 on i686-pc-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 32-bit
(1 row)
$ mysql -u root -p -e "select version();"
Enter password:
+-------------------------+
| version()               |
+-------------------------+
| 5.5.35-0ubuntu0.12.04.2 |
+-------------------------+
$ sqlite3 --version
3.7.9 2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e

使用したテーブルおよびデータ

CREATE TABLE t1 (c1 INT);
CREATE TABLE t2 (c1 INT);
CREATE TABLE t3 (c1 INT, c2 INT);
INSERT INTO t1 VALUES(1);
INSERT INTO t1 VALUES(2);
INSERT INTO t1 VALUES(3);
INSERT INTO t1 VALUES(4);
INSERT INTO t1 VALUES(5);
INSERT INTO t1 VALUES(6);
INSERT INTO t1 VALUES(7);
INSERT INTO t1 VALUES(8);
INSERT INTO t1 VALUES(9);
INSERT INTO t2 VALUES(1);
INSERT INTO t2 VALUES(2);
INSERT INTO t2 VALUES(3);
INSERT INTO t2 VALUES(4);
INSERT INTO t2 VALUES(5);
INSERT INTO t2 VALUES(6);
INSERT INTO t2 VALUES(7);
INSERT INTO t2 VALUES(8);
INSERT INTO t2 VALUES(9);
INSERT INTO t3 VALUES(1,9);
INSERT INTO t3 VALUES(2,8);
INSERT INTO t3 VALUES(3,7);
INSERT INTO t3 VALUES(4,6);
INSERT INTO t3 VALUES(5,5);
INSERT INTO t3 VALUES(6,4);
INSERT INTO t3 VALUES(7,3);
INSERT INTO t3 VALUES(8,2);
INSERT INTO t3 VALUES(9,1);

SELECTで四則演算してみる

t1,t2テーブルのc1カラムを使って掛け算をした時の出力です。
掛け算表が出力されているのが確認できます。

mysql> select t1.c1, t2.c1, t1.c1*t2.c1 from t1,t2;
+------+------+-------------+
| c1   | c1   | t1.c1*t2.c1 |
+------+------+-------------+
|    1 |    1 |           1 |
|    2 |    1 |           2 |
|    3 |    1 |           3 |
|    4 |    1 |           4 |
|    5 |    1 |           5 |
|    6 |    1 |           6 |
|    7 |    1 |           7 |
|    8 |    1 |           8 |
|    9 |    1 |           9 |
|    1 |    2 |           2 |
|    2 |    2 |           4 |
|    3 |    2 |           6 |
|    4 |    2 |           8 |
|    5 |    2 |          10 |
|    6 |    2 |          12 |
|    7 |    2 |          14 |
|    8 |    2 |          16 |
|    9 |    2 |          18 |
|    1 |    3 |           3 |
|    2 |    3 |           6 |
|    3 |    3 |           9 |
|    4 |    3 |          12 |
|    5 |    3 |          15 |
|    6 |    3 |          18 |
|    7 |    3 |          21 |
|    8 |    3 |          24 |
|    9 |    3 |          27 |
|    1 |    4 |           4 |
|    2 |    4 |           8 |
|    3 |    4 |          12 |
|    4 |    4 |          16 |
|    5 |    4 |          20 |
|    6 |    4 |          24 |
|    7 |    4 |          28 |
|    8 |    4 |          32 |
|    9 |    4 |          36 |
|    1 |    5 |           5 |
|    2 |    5 |          10 |
|    3 |    5 |          15 |
|    4 |    5 |          20 |
|    5 |    5 |          25 |
|    6 |    5 |          30 |
|    7 |    5 |          35 |
|    8 |    5 |          40 |
|    9 |    5 |          45 |
|    1 |    6 |           6 |
|    2 |    6 |          12 |
|    3 |    6 |          18 |
|    4 |    6 |          24 |
|    5 |    6 |          30 |
|    6 |    6 |          36 |
|    7 |    6 |          42 |
|    8 |    6 |          48 |
|    9 |    6 |          54 |
|    1 |    7 |           7 |
|    2 |    7 |          14 |
|    3 |    7 |          21 |
|    4 |    7 |          28 |
|    5 |    7 |          35 |
|    6 |    7 |          42 |
|    7 |    7 |          49 |
|    8 |    7 |          56 |
|    9 |    7 |          63 |
|    1 |    8 |           8 |
|    2 |    8 |          16 |
|    3 |    8 |          24 |
|    4 |    8 |          32 |
|    5 |    8 |          40 |
|    6 |    8 |          48 |
|    7 |    8 |          56 |
|    8 |    8 |          64 |
|    9 |    8 |          72 |
|    1 |    9 |           9 |
|    2 |    9 |          18 |
|    3 |    9 |          27 |
|    4 |    9 |          36 |
|    5 |    9 |          45 |
|    6 |    9 |          54 |
|    7 |    9 |          63 |
|    8 |    9 |          72 |
|    9 |    9 |          81 |
+------+------+-------------+
81 rows in set (0.00 sec)

t3テーブルのc1,c2カラムを使って四則演算をしてみます。

mysql> select c1 / c2 from t3;
+---------+
| c1 / c2 |
+---------+
|  0.1111 |
|  0.2500 |
|  0.4286 |
|  0.6667 |
|  1.0000 |
|  1.5000 |
|  2.3333 |
|  4.0000 |
|  9.0000 |
+---------+
9 rows in set (0.02 sec)
mysql> select c1 * c2 from t3;
+---------+
| c1 * c2 |
+---------+
|       9 |
|      16 |
|      21 |
|      24 |
|      25 |
|      24 |
|      21 |
|      16 |
|       9 |
+---------+
9 rows in set (0.00 sec)
mysql> select c1 - c2 from t3;
+---------+
| c1 - c2 |
+---------+
|      -8 |
|      -6 |
|      -4 |
|      -2 |
|       0 |
|       2 |
|       4 |
|       6 |
|       8 |
+---------+
9 rows in set (0.00 sec)

以上、SQLにて四則演算をするサンプルSQLでした。
四則演算以外もできますのでいろいろ試してみると良いと思いますよ。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00