在练习case when 语句时,碰到一个例子,结果答案根本就不对,语法就通不过,开始想着是不是case 只能是一个固定的取值,毕竟例子内给的都是case是个固定的值,后来网上查了好久才发现还有区间的用法,下面附带例子
背景是Scott用户下面的EMP表(oracle创建时默认自带的)
算出每个部门,每个职位的平均工资和平均奖金(平均值包括没有奖金)如果平均奖金大于300,显示‘奖金不错‘,如果平均奖金100到300,显示‘奖金一般‘,如果平均奖金小于100,显示“基本没有奖金”,按部门编号降序,平均工资降序排列
select deptno,job,avg(sal)平均工资,avg(nvl(comm,0))平均奖金,case when avg(nvl(comm,0))>=300 then ‘奖金不错‘ avg(nvl(comm,0))>100 and avg(nvl(comm,0))<300 then ‘奖金一般‘ else ‘基本没有奖金‘ end 奖金状况 from emp group by deptno,job order by deptno desc, avg(sal) desc;
即case的前后不需要带参数,在when内将参数带入即可
时间: 2024-10-05 15:21:25