-
자체적 연습 문제
1) 근무지가 "NEW YORK"이 아닌 사원들의 사원 번호, 사원 이름, 매니저 이름을 나타내시오.
select e.empno, e.ename, (select ename from emp where e.mgr = empno), d.loc from emp e, dept d where d.loc ^= 'NEW YORK' and e.deptno = d.deptno ;
2) Manager와 Analyst의 평균 연봉과 President와 Clerk의 평균 연봉을 나타내시오.
select (select avg(sal) from emp where job in ('MANAGER', 'ANALYST') ) AS "M와 A 평균 연봉", (select avg(sal) from emp where job in ('PRESIDENT', 'CLERK') )AS "P와 C 평균 연봉" from emp group by 0 -- 테이블 크기를 줄이고 싶은데,,, 필요한 건 딱 2개니까 -- 그냥 숫자 넣으면 1개만 출력되네,, 왜? ;
3) 상여금을 받지 않는 직원들의 사원 번호, 이름, 담당 업무, 평균 연봉을 나타내시오. (평균 연봉은 월급*12 + 상여금)
select empno, ename, job, 12*sal from emp where comm IS NULL ;
4) 가장 빨리 입사한 직원과 가장 늦게 입사한 직원의 연봉 평균을 나타내시오.
5) 근무지가 같은 사원들의 연봉 평균을 나타내시오.
select d.loc, avg(e.sal) from dept d, emp e where d.deptno = e.deptno group by d.loc ;
6) 이름에 A가 들어가는 직원과 E가 들어가는 직원의 급여 평균을 비교하여 그 결과를 맨 우측에 나타내시오. (=, >, <)
select (select trunc(avg(sal)) from emp where ename like '%A%') as A, (select trunc(avg(sal)) from emp where ename like '%E%') as B, case when (select avg(sal) from emp where ename like '%A%') > (select avg(sal) from emp where ename like '%E%') then '>' when (select avg(sal) from emp where ename like '%E%') > (select avg(sal) from emp where ename like '%A%') then '<' else '=' end as Result from emp group by 1 ;
너무 못한 것 같아. case문 수정할 방법을 생각해야될 것 같아.