【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を書いて実行してみると
上記の様になるが、赤枠で囲ったところなどを注目すると分かるように、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文が上。
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文が上。
結果は上のとおり小数点2桁まで求められるようになった。
タグ : SQLite