SQL で小数点を扱う方法と四捨五入のテクニックを徹底解説!

こんにちは、阿久梨絵です!
SQL を使った数値計算では、計算結果に小数点以下の値が出ることがよくあります。
たとえば、AVG() での平均値の計算、SUM() での売上集計、除算(/)を行った際など、小数点が含まれるデータは日々の業務分析や財務計算に欠かせません。

しかし、データを適切に処理しないと、次のような問題が発生することがあります。

データの正確性が損なわれる → 端数処理のルールによって結果が異なるため、誤った解釈につながる
ビジネス上の決定に影響 → 割引計算や財務データの集計では、小数点の扱いが業績に直接影響を与える
データの視認性が低下 → 長すぎる小数点以下の値は、レポートや画面表示をわかりにくくする

例えば、以下のような場面では、小数点の処理が極めて重要になります。

売上計算 → 商品価格や税額計算で小数点を四捨五入するケースが多い
金融データの取り扱い → 円単位の計算時に適切な切り捨て処理が必要
統計データの処理 → レポートの数値を整え、見やすくする

そこでSQLでは、特定のルールに従って小数点を処理するための関数が用意されています。
次の章では、SQLで小数点を適切に処理するテクニックについて詳しく解説します!

SQLで小数点の処理を行う方法

SQLでは、小数点を適切に制御するための関数として、以下の4つが主要な選択肢となります。

ROUND():四捨五入

ROUND()関数を使うことで、指定した桁数で四捨五入が可能です!

SELECT ROUND(123.456, 2) AS rounded_value;

→結果: 123.46(小数第2位まで表示)

ROUND(値, 桁数) → 指定した桁数で四捨五入される
ROUND(値) → 小数点なしの整数に四捨五入(例:ROUND(5.7) → 6)

TRUNCATE():切り捨て

四捨五入ではなく、特定の桁数までで切り捨てたい場合はTRUNCATE()を使用

SELECT TRUNCATE(123.456, 2) AS truncated_value;

→結果: 123.45(小数第2位までで切り捨て)

TRUNCATE(値, 桁数) → 指定した桁数まで保持し、それ以降の桁を削除

FLOOR():小数点以下を完全に切り捨て

整数化したい場合は、FLOOR()を使って常に下方向に丸める

SELECT FLOOR(5.9) AS floored_value;

→結果: 5(常に小さい方向に丸める)

FLOOR(値) → 小数点以下をすべて削除し、一番小さい整数を取得

CEIL():小数点以下を切り上げ

反対に、整数化するときに常に上方向へ丸めたい場合はCEIL()を使用

SELECT CEIL(5.1) AS ceiled_value;

→結果: 6(常に大きい方向に丸める)

CEIL(値) → 小数点以下をすべて削除し、一番大きい整数を取得

SQLの小数点処理を活用する場面

売上計算(ROUND()) → 表示の利便性を考慮し、小数第2位で四捨五入
ユーザー入力値の調整(TRUNCATE()) → 小数点を削除し、見やすく表示
価格の最適化(FLOOR()) → 割引価格計算時、確実に切り捨てて計算
ポイント計算(CEIL()) → ポイントを整数値で管理するために切り上げ

計算結果に応じて最適な関数を使い分けることで、データ処理を柔軟にカスタマイズ可能!

まとめ

ROUND() → 指定した桁数で四捨五入(例:123.456 → 123.46)
TRUNCATE() → 指定桁数で切り捨て(例:123.456 → 123.45)
FLOOR() → 小さい整数に切り捨て(例:5.9 → 5)
CEIL() → 大きい整数に切り上げ(例:5.1 → 6)

SQL を活用して、データの精度を保ちつつ、適切な計算処理を行うことが重要です。
業務で使う計算処理に応じて、最適な関数を活用してみてください!
阿久梨絵でした!

Verified by MonsterInsights