例えば以下のようなテーブルがあるとします。(全てINTEGER型)
key | num1 | num2 |
---|---|---|
1 | 10 | 3 |
2 | 10 | 8 |
3 | 30 | 11 |
で、num2 の num1 に対する割合をSQL実行時に求めたいとします。
当初以下のようにしてました。
select key , num1 , num2 , num2/num1 as res from tbl
しかし、結果は以下のようには整数に丸められてしまいます。
key | num1 | num2 | res |
---|---|---|---|
1 | 10 | 3 | 0 |
2 | 10 | 8 | 0 |
3 | 30 | 11 | 0 |
この場合、REAL型(浮動小数点)にキャストしてやればいいようです。
cast(列名 as 型名)関数でキャストできます。
select key , num1 , num2 , cast(num2 as REAL)/cast(num1 as REAL) as res from tbl
結果:
key | num1 | num2 | res |
---|---|---|---|
1 | 10 | 3 | 0.3 |
2 | 10 | 8 | 0.8 |
3 | 30 | 11 | 0.36666666 |
小数点以下四捨五入するするには、round(列名,小数点以下の桁数)関数を用います。
例えば、小数点以下第二位まで求める場合は以下の様な感じ。
select key , num1 , num2 , round( cast(num2 as REAL)/cast(num1 as REAL) , 2) as res from tbl
結果:
key | num1 | num2 | res |
---|---|---|---|
1 | 10 | 3 | 0.3 |
2 | 10 | 8 | 0.8 |
3 | 30 | 11 | 0.37 |