ROUNDとTRUNCファンクションは、Oracle SQLで値を調整するために便利なツールです。この記事では、その使い方と用途を初心者にもわかりやすく解説します。さらに、数値だけでなく日付型のデータに対する適用例も含め、実務での活用法を紹介します。
リンク
リンク
リンク
ROUNDファンクション
ROUNDは、数値や日付を「四捨五入」して調整します。第二引数に指定した位で四捨五入されます。指定しない場合は小数点第一位で四捨五入されます。
ROUNDの構文
SELECT ROUND(数値, 調整する位) FROM テーブル;
数値に対する実例
以下のクエリは、職員の給与を十位単位で四捨五入します。
SELECT empno, sal, ROUND(sal, -1) AS rounded_sal
FROM emp;
実行結果
EMPNO | SAL | ROUNDED_SAL |
---|---|---|
7369 | 800 | 800 |
7499 | 1600 | 1600 |
7566 | 2975 | 2980 |
日付に対する実例
ROUNDは日付の調整にも使用できます。以下の例では、日付を最も近い月に丸めます。
SELECT hiredate, ROUND(hiredate, 'MONTH') AS rounded_date
FROM emp;
実行結果
HIREDATE | ROUNDED_DATE |
1981-11-17 | 1981-12-01 |
1981-05-01 | 1981-05-01 |
ROUNDのメモ
- 数値型: 小数点以下を指定して調整可能。
- 日付型: ‘YEAR’や’MONTH’といった日時フォーマットを指定可能。
- 財務計算やデータの丸め処理でよく使われます。
TRUNCファンクション
TRUNCは、値を「切り捨て」て調整します。ROUNDとの違いは、値を四捨五入せずに指定した位で切り捨てることです。
TRUNCの構文
SELECT TRUNC(数値, 切り捨てる位) FROM テーブル;
数値に対する実例
以下のクエリは、職員の給与を十位単位で切り捨てます。
SELECT empno, sal, TRUNC(sal, -1) AS truncated_sal
FROM emp;
実行結果
EMPNO | SAL | TRUNCATED_SAL |
7369 | 800 | 800 |
7499 | 1600 | 1600 |
7566 | 2975 | 2970 |
日付に対する実例
日付を切り捨てることも可能です。以下の例では、日付を月の初日に切り捨てます。
SELECT hiredate, TRUNC(hiredate, 'MONTH') AS truncated_date
FROM emp;
実行結果
HIREDATE | TRUNCATED_DATE |
1981-11-17 | 1981-11-01 |
1981-05-01 | 1981-05-01 |
TRUNCのメモ
- 数値型: 減点なしで値を切り捨てる場合に適用。
- 日付型: 日付を特定の単位で切り捨て可能。
- 情報の粒度調整やデータ分析で有用。
ROUNDとTRUNCの違い
項目 | ROUND | TRUNC |
動作 | 四捨五入する | 切り捨てる |
主な用途 | 正確な丸め計算 | 粒度調整 |
日付対応 | 可能 | 可能 |
注意点
- ROUNDは小数点以下の丸め計算に適し、TRUNCは値の単純な切り捨てに向いています。
- 必要な位の指定を間違えると意図しない結果になる可能性があるため、要注意です。
おわりに
ROUNDとTRUNCは、数値や日付データの調整において非常に便利なファンクションです。それぞれの特性を理解し、実際のシステム設計やデータ処理で適切に活用してください。特に、日付データに対する応用は多岐にわたるため、ぜひ試してみてください。
[参考]
Oracle Database SQL言語リファレンス 19c
コメント