今回はSQLでよく使われるROUND関数について紹介する。
ROUND関数とは?
ROUND関数は、対象の数値を指定した桁数で四捨五入してくれる数値関数だ。
例えば、下記のsampleテーブルにおけるvalueカラム(データ型はFLOAT型)には小数点以下の数値が表示されている。
これをROUND関数を使用して小数点第一位と小数点第二位で四捨五入した場合のクエリとその実行結果が下記だ。
1 2 3 4 5 6 7 8 |
SELECT ID ,value ,ROUND(value) as round ,ROUND(value,0) as round_0 ,ROUND(value,1) as round_1 FROM 'sample_table'; |
実際にROUND関数を使った結果を見ると、value
カラムの各値がそれぞれ以下のように四捨五入されていることが分かる。
- round カラム:引数を指定していない → 小数点第1位で四捨五入(=整数に丸める)
- round_0 カラム:
ROUND(value, 0)
→ 同じく小数点第1位で四捨五入 - round_1 カラム:
ROUND(value, 1)
→ 小数点第2位で四捨五入
このように、ROUND関数はカラムの数値を指定した桁数で四捨五入してくれる関数だ。
引数を1つ(=対象の数値カラム)だけ指定した場合は、小数点第1位で四捨五入されるのがデフォルトの動作となる。
なお、ROUND関数の対象とできるのは数値型のカラムに限られる。
数値のように見えても、実際のデータ型が文字列型の場合はエラーになる点には注意が必要だ。
ROUND関数の使い方
ROUND関数は下記2つを指定して使う。
- 対象のカラム
- 有効桁数(四捨五入の結果を反映する桁)
有効桁数の指定は省略可能だ。
その場合は有効桁数=0を指定した場合と同じなので、小数点第一位を四捨五入する。
そのため、下記は同じ意味となる。
具体例を見てみよう。
先ほどのsampleテーブルのvalueカラムの値を、小数点第二位で四捨五入する場合のROUND関数の指定例は下記の通りだ。
ROUND関数の有効桁数=1を指定しているので、「小数点第一位を有効桁数とする」という指定になる。
そのため、小数点第二位の値が四捨五入されて、その結果が小数点第一位に反映される。
指定した桁が四捨五入されるわけではないには注意したい。
整数を四捨五入したい場合
整数を四捨五入したい場合は、有効桁数の指定に ー(マイナス)を指定すればOKだ。
下記は有効桁数=-1 を指定している例だ。
上記例の場合は -1 を指定しているので、1の位が四捨五入されている。
整数を四捨五入することはあまり無いかもしれないが、ROUND関数はこのように四捨五入する桁を自由に調整することができるのだ。
まとめ
今回は値を四捨五入してくれるROUND関数について紹介した。要点は下記の通りだ。
ROUND(数値)
で小数点第1位を四捨五入(=整数に丸める)ROUND(数値, 桁数)
で任意の桁数で四捨五入が可能- 有効桁数に負の値を指定すれば、整数部分の桁(10の位、100の位など)を四捨五入できる
- ROUND関数は数値型のカラムにしか使えない(文字列型にはエラー)
ROUND関数は値を四捨五入するが、似ている関数としては下記がある。
- FLOOR関数:値の切り捨て
- CEILING関数:値の切り上げ
これらの関数もセットで理解しておくと、用途やデータの性質に応じて柔軟に使い分けができるようになるだろう。
四捨五入・切り捨て・切り上げ、それぞれの動きをしっかり把握しておくことが、正確なデータ処理の第一歩だ。