【SQLiteメモ】小数点以下を取得するには

Ajaxの勉強がてらに投票プログラムを作ってみた。 – KUMA TYPE

上記で配布している投票プログラムで作成されたデータベースで評価の平均点を求めようと思う場合。

    テーブル名:TBL_VOTE
1 entry_id   INTEGER UNIQUE 記事ID
2 vote_num   INTEGER        投票回数
3 totalpoint INTEGER        総合点数

テーブルも構造は上の様になっている。

select totalpoint/vote_num, vote_num,totalpoint FROM TBL_VOTE ORDER BY totalpoint/vote_num desc

そして評価平均を求めるために、総合点数÷投票回数という単純な計算で値を求めようとして上のようなSQLを書いて実行してみると

20100770 
上記の様になるが、赤枠で囲ったところなどを注目すると分かるように、17/4、9/2など明らかに割り切れない値でも小数点以下が取得出来ていない。これはデータの型がINTEGERで整数型として定義されているためなのでcastで型をREAL型に変更する必要がある。

select cast(totalpoint as REAL)/vote_num, vote_num,totalpoint FROM TBL_VOTE ORDER BY cast(totalpoint as REAL)/vote_num desc

castの使い方はcast(カラム名 as 型名)となる。

実際にcastを適用したSQL文が上。

20100771
castを使用した結果小数点以下も取得できるようになった。さらに、小数点以下を四捨五入して必要な桁数分取得するにはround関数を利用する。

round関数の使い方はround(カラム名[,小数点以下の桁数])

select round(cast(totalpoint as REAL)/vote_num,2), vote_num,totalpoint FROM TBL_VOTE ORDER BY cast(totalpoint as REAL)/vote_num desc

round関数を適用したSQL文が上。

20100772

結果は上のとおり小数点2桁まで求められるようになった。

タグ :