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

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* 使用環境 [#u1433d73]
以下の環境で動作確認を行いました。
-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

* 使用したテーブルおよびデータ [#z767ffda]
 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で四則演算してみる [#ja092b79]
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でした。~
四則演算以外もできますのでいろいろ試してみると良いと思いますよ。

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS