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