如何结合over子句或其他方式使用Ceiling函数获取ceil值
Ceiling函数与OVER子句结合使用方法
直接将CEILING()函数嵌套在包含OVER子句的AVG()聚合函数外层即可,核心语法如下:
CEILING(AVG(目标计算列) OVER (窗口分区/排序逻辑))
实际使用示例
假设存在员工表employee,包含dept_id(部门ID)、salary(薪资)等字段,需要查询所有员工基础信息的同时,输出其所属部门的平均薪资向上取整后的值,代码如下:
SELECT employee_id, emp_name, dept_id, salary, CEILING(AVG(salary) OVER (PARTITION BY dept_id)) AS dept_ceil_avg_salary FROM employee;
注意事项
- 语法顺序不能颠倒:OVER子句必须紧跟它所属的聚合函数(此处为AVG),不能将OVER写在CEILING函数外面
- 部分数据库的对应函数名存在差异:Oracle中实现相同逻辑的函数为
CEIL(),用法和CEILING()完全一致 - OVER子句内可以正常添加
ORDER BY、窗口帧限制(ROWS/RANGE)等逻辑,不会影响外层CEILING的计算效果
内容的提问来源于stack exchange,提问作者Radhika singhal
相关产品推荐
相关产品推荐

