ここでは数値の端数処理(四捨五入/切り捨て/切り上げ)で使うSQL関数について紹介します。

四捨五入

小数を四捨五入する(ROUND関数)

SELECT ROUND(1.5678) FROM DUAL
--結果:2


小数桁を指定して小数を四捨五入する(ROUND関数)

ROUND関数で小数を四捨五入するには第2引数に正の数を指定します。

--小数第2位を四捨五入する
SELECT ROUND(1.5678, 1) FROM DUAL
--結果:1.6

--小数第3位を四捨五入する
SELECT ROUND(1.5678, 2) FROM DUAL
--結果:1.57

--小数第4位を四捨五入する
SELECT ROUND(1.5678, 3) FROM DUAL
--結果:1.568


整数桁を指定して整数を四捨五入する(ROUND関数)

ROUND関数で整数を四捨五入するには第2引数に負の数を指定します。

--1の位を四捨五入する
SELECT ROUND(1567.8, -1) FROM DUAL
--結果:1570

--10の位を四捨五入する
SELECT ROUND(1567.8, -2) FROM DUAL
--結果:1600

--100の位を四捨五入する
SELECT ROUND(1567.8, -3) FROM DUAL
--結果:2000


切り捨て

小数を切り捨てる(TRUNC関数)

SELECT TRUNC(1.5678) FROM DUAL
--結果:1


小数桁を指定して小数を切り捨てるTRUNC関数

TRUNC関数で小数を切り捨てるには第2引数に正の数を指定します。

--小数第2位を切り捨てる
SELECT TRUNC(1.5678, 1) FROM DUAL
--結果:1.5

--小数第3位を切り捨てる
SELECT TRUNC(1.5678, 2) FROM DUAL
--結果:1.56

--小数第4位を切り捨てる
SELECT TRUNC(1.5678, 3) FROM DUAL
--結果:1.567


整数桁を指定して整数を切り捨てる(TRUNC関数)

TRUNC関数で整数を切り捨てるには第2引数に負の数を指定します。

--1の位を切り捨てる
SELECT TRUNC(1567.8, -1) FROM DUAL
--結果:1560

--10の位を切り捨てる
SELECT TRUNC(1567.8, -2) FROM DUAL
--結果:1500

--100の位を切り捨てる
SELECT TRUNC(1567.8, -3) FROM DUAL
--結果:1000


切り上げ

小数を切り上げる(CEIL関数、FLOOR関数)

SELECT CEIL(1.2345) FROM DUAL
--結果:2

ただし、CEIL関数に負の数を指定すると切り上げになりません。負の数はFLOOR関数を使用します。

--負の数はCEIL関数では切り上げられない
SELECT CEIL(-1.2345) FROM DUAL
--結果:-1

--負の数はFLOOR関数で切り上げらる
SELECT FLOOR(-1.2345) FROM DUAL
--結果:-2


小数桁を指定して小数を切り上げる(CEIL関数、FLOOR関数

CEIL関数には第2引数がありません。指定した位で切り上げたい場合は CEIL(数値 * 10) / 10 のように計算して処理します。負の数はFLOOR関数を使用します。

--小数第2位を切り上げる
SELECT CEIL(1.2345 * 10) / 10 FROM DUAL
--結果:1.3

--小数第3位を切り上げる
SELECT CEIL(1.2345 * 100) / 100 FROM DUAL
--結果:1.24

--小数第4位を切り上げる
SELECT CEIL(1.2345 * 1000) / 1000 FROM DUAL
--結果:1.235


整数桁を指定して整数を切り上げる(CEIL関数、FLOOR関数

CEIL関数には第2引数がありません。指定した位で切り上げたい場合は CEIL(数値 / 10) * 10 のように計算して処理します。負の数はFLOOR関数を使用します。

--1の位を切り上げる
SELECT CEIL(1234.5 / 10) * 10 FROM DUAL
--結果:1240

--10の位を切り上げる
SELECT CEIL(1234.5 / 100) * 100 FROM DUAL
--結果:1300

--100の位を切り上げる
SELECT CEIL(1234.5 / 1000) * 1000 FROM DUAL
--結果:2000


以上、数値の端数処理(四捨五入/切り捨て/切り上げ)で使うSQL関数について解説しました。