3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(SQLite)Select句で計算をした場合に小数にする方法

例えば以下のようなテーブルがあるとします。(全て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

参考:
【SQLiteメモ】小数点以下を取得するには - KUMA TYPE