rank()over(partition by order by)
rank()over(partition by order by)实现分组 排序
-- 查询各部门工资最高的雇员的信息
select e.ename, e.job, e.sal, e.deptno
from emp e right join
(select e.deptno, max(e.sal) sal from scott.emp e group by e.deptno) me
on e.deptno = me.deptno
where e.sal = me.sal
order by e.deptno desc ;
select e.ename, e.job, e.sal, e.deptno
from (select e.ename,
e.job,
e.sal,
e.deptno,
rank() over(partition by e.deptno order by e.sal desc) rank
from emp e) e
where e.rank = 1;
e.sal 如果一样,则它的rank 是一样的
decode 函数
1、在sql中作用相当于case when,意思是根据某一字段的值作为条件,根据这个条件进行输出。
4、DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;
5、另外,在decode中,null和null是相等的,但在case when中,只能用is null来判
select decode(mod(empno,2),1,'mod结果是1,走这个',0,'mod结果是0,走这个') from emp ;
select decode(mod(empno,2),1,'1','0') from emp ;