当前位置: 首页 > java >正文

[Oracle] ROUND()函数

ROUND() 是Oracle 中常用的数值处理函数,用于对数值进行四舍五入操作

ROUND()函数可以对数值和小数点后指定位数进行精确的四舍五入处理

语法格式

ROUND(number, decimal_places)

参数说明

number:要四舍五入的数字
decimal_places:指定要保留的小数位数(可选)
正数:表示小数位数
负数:表示整数位数
省略:默认为0 (四舍五入到整数)

示例1

-- 四舍五入到整数(默认)
SELECT ROUND(123.456) FROM dual;  -- 123
SELECT ROUND(123.556) FROM dual;  -- 124-- 保留1位小数
SELECT ROUND(123.4567, 1) FROM dual;  -- 123.5-- 保留2位小数
SELECT ROUND(123.4567, 2) FROM dual;  -- 123.46-- 结果: 3.33333333333333, 3.33
SELECT 10/3, ROUND(10/3, 2) FROM dual;-- 保留3位小数
SELECT ROUND(123.4567, 3) FROM dual;  -- 123.457-- 四舍五入到十位(-1表示十位)
SELECT ROUND(123.456, -1) FROM dual;  -- 120-- 四舍五入到百位(-2表示百位)
SELECT ROUND(123.456, -2) FROM dual;  -- 100-- 四舍五入到千位
SELECT ROUND(1255, -3) FROM dual;  -- 1000
SELECT ROUND(1555, -3) FROM dual;  -- 2000

示例2

SELECT ROUND(NULL, 2) FROM dual;  -- NULL

提示Tips:ROUND()函数的输入值为NULL,其输出值也为NULL

实际应用场景

-- 计算平均工资并四舍五入到整数
SELECT department_id, ROUND(AVG(salary)) AS avg_salary
FROM employees
GROUP BY department_id;-- 计算产品折扣价格(保留2位小数)
SELECT product_name, price,ROUND(price * 0.9, 2) AS discounted_price
FROM products;-- 报表中的金额格式化
SELECT order_id,ROUND(order_total, 2) AS rounded_total,TO_CHAR(ROUND(order_total, 2), '$999,999.99') AS formatted_total
FROM orders;

补充扩展知识:ROUND()函数也能够进行日期处理

ROUND(date, format)

参数说明
date:要四舍五入的日期
format:指定四舍五入的日期部分(可选)
'YEAR' 或 'YYYY' - 四舍五入到年
'MONTH' 或 'MM' - 四舍五入到月
'DAY' 或 'DD' - 四舍五入到日
'HH24', 'HH12', 'MI' - 四舍五入到小时或分钟

示例

-- 四舍五入到年
-- 如果月份 ≥7 则进到下年,否则保持本年
SELECT ROUND(TO_DATE('2025-08-06', 'YYYY-MM-DD'), 'YEAR') FROM dual;  -- 2026/1/1
SELECT ROUND(TO_DATE('2025-06-06', 'YYYY-MM-DD'), 'YEAR') FROM dual;  -- 2025/1/1-- 四舍五入到月
-- 如果日期 ≥16 则进到下月,否则保持本月
SELECT ROUND(TO_DATE('2025-08-06', 'YYYY-MM-DD'), 'MONTH') FROM dual;  -- 2025/8/1
SELECT ROUND(TO_DATE('2025-08-16', 'YYYY-MM-DD'), 'MONTH') FROM dual;  -- 2025/9/1-- 四舍五入到日(默认)
-- 如果时间 ≥12:00 则进到次日,否则保持当日
SELECT ROUND(SYSDATE) FROM dual;  -- 2025/8/6

实际应用场景

-- 计算员工入职周年(四舍五入到年)
SELECT employee_id, hire_date,ROUND(hire_date, 'YEAR') AS hire_anniversary
FROM employees;-- 生成季度报告(四舍五入到季度)
SELECT report_id,report_date,ROUND(report_date, 'Q') AS quarter_start
FROM reports;-- 计算月结日(四舍五入到月)
SELECT account_id,transaction_date,ROUND(transaction_date, 'MONTH') AS month_end
FROM transactions;
http://www.xdnf.cn/news/17246.html

相关文章:

  • ORACLE 19C建库时卡在46%、36%
  • 《设计模式之禅》笔记摘录 - 13.迭代器模式
  • Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!
  • 数据结构 二叉树(1)二叉树简单了解
  • 指挥中心自动化的演变
  • 状态模式及优化
  • 3479. 水果成篮 III
  • InfluxDB 集群部署与高可用方案(一)
  • 《深入浅出Embedding》这本书
  • ipv6学习
  • RNN梯度爆炸/消失的杀手锏——LSTM与GRU
  • mysql优化策略
  • 《算法导论》第 7 章 - 快速排序
  • C++11之智能指针
  • Excel制作尖刀图,直观展示业绩涨跌
  • SELinux加固Linux安全2
  • Anthropic MCP架构深度解析:下一代AI工具集成协议的设计哲学
  • AT32的freertos下modbus TCP移植
  • git push 提示:com port 443 after 75002 ms: Couldn#039;t connect to server
  • TFTP: Linux 系统安装 TFTP,文件系统启动后TFTP使用
  • EasyExcel高效工具类:简化Excel导入导出,支持多Sheet与枚举转换
  • 磁悬浮转子变转速工况下的振动抑制全解析
  • 论文学习19:Multi-view Aggregation Network for Dichotomous Image Segmentation
  • 系统启动项管理工具对美国服务器性能基线的验证标准
  • 快手小店客服自动化回复
  • 01数据结构-并查集
  • Linux86 sheel流程控制前瞻4 判断vsftpd服务启动,如果启动,打印端口号,进程id
  • SRS简介及简单demo
  • 将英文PDF文件完整地翻译成中文的4类方式
  • 分布式存储 Ceph 的演进经验 · SOSP 2019