Oracle条件表达式

条件表达式:
case 字段:
   when 值1  then 值
   when 值1  then 值
   else
      默认值
   end

case...when 通用写法 mysql和oracle中都可以使用


Oracle特有的写法:decode(字段,if1,then1,if2,then2,else1)


---给表中姓名取一个中文名
写法1:
select 
      case ename 
	when 'SMITH' then '刘备'
	when 'ALLEN' then '诸葛'
	else
	   '路人甲'
	end "中文名"	
from emp;
 
写法2:
select decode(ename,'SMITH','刘备','ALLen','诸葛','SCOTT','曹操','路人乙') from emp;


分组排序:
分组表达式:group by
select 分组条件,分组之后的操作 from 表名 group by 分组条件 having 条件过滤;

----查询分组统计所有部门的平均工资,找出平均工资大于2000的部门
1.查询所有部门的平均工资
select deptno,avg(sal) from emp group by deptno;
2.过滤出大于2000的部门
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000; 

出错:
select deptno,avg(sal) aafrom emp group by deptno having aa > 2000; 

注:
SQL的编写顺序:
 select from .. where.. group by .. having .. order by

SQL的执行顺序:
 from ..where ..group by ..having..select..order by

where和having的区别:
where后边不可以接聚合函数,可以接单行函数
having在group by之后执行,可以接聚合函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值