scaoping 发表于 2018-9-9 13:01:52

ORACLE SQL 子查询

  第六章:子查询
  1.比black工资高的雇员有哪些?(where 子句中带有查询)
  select ename
  from emp
  where sal>(select sal from emp where ename='BLAKE');
  不使用表连接,打印出相同的结果集!(select子句中带有查询)
  select ename,loc
  from emp
  natural join dept;
  select ename,
  case deptno
  when 10 then (select loc from dept where deptno=10)
  when 20 then (select loc from dept where deptno=20)
  when 30 then (select loc from dept where deptno=30)
  else (select loc from dept where deptno=40) end location
  from emp;
  高于30部门最高工资的雇员有哪些?
  select ename,sal
  from emp
  where sal>(select max(sal) from emp where deptno=30);
  select ename,sal
  from emp
  where sal > all (select sal from emp where deptno=30);
  大于10部门最小工资的雇员有哪些?
  select ename,sal
  from emp
  where sal> (select min(sal) from emp where deptno=10);
  select ename,sal
  from emp
  where sal > any (select sal from emp where deptno=10);
  工资最高的人是谁?
  select ename from emp
  where sal=(select max(sal) from emp);
  和ALLEN同部门,工资高于MARTIN的雇员有哪些?
  select ename from emp
  where
  deptno=(select deptno from emp where ename='ALLEN')
  and
  sal>(select sal from emp where ename='MARTIN');
  工作和部门与SMITH相同,工资高于JAMES的雇员有哪些?
  select ename from emp
  where (job,deptno)=(select job,deptno from emp where ename='SMITH')
  and sal>(select sal from emp where ename='JAMES');
  工资高于本部门平均工资的人(拿上游工资的人)有哪些?
  select ename,sal,avgsal,e.deptno
  from emp e,
  (select avg(sal) avgsal,deptno
  from emp
  group by deptno) b
  where e.deptno=b.deptno
  and e.sal>b.avgsal;
  工资前五名的人?(TOP-N 分析)
  select ename,sal
  from emp
  where sal in
  (select sal
  from (select distinct sal from emp order by sal desc)
  where rownum
页: [1]
查看完整版本: ORACLE SQL 子查询