SQL 예제문제 (2)
<EMP 테이블>
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
<DEPT 테이블>
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
[문제 1] 평균 급여가 가장 높은 부서와 낮은 부서의 번호 출력
[문제 1 답]
1
2
3
4
5
6
7
|
select deptno, avg(sal)
from emp
group by deptno
having avg(sal) = (select max(avg(sal)) from emp
group by deptno or
avg(sal) = (select min(agv(sal)) from emp
group by detpno);
|
cs |
[문제 2] president을 제외하고 각 업무별 사원의 총 급여가 2000이상인
각 업무에 대해서, 업무명과 각 업무별 평균 급여 출력
단, 평균급여의 내림차순으로 출력
[문제 2 답]
1
2
3
4
5
|
select job, round(avg(sal)) from emp
where job != 'president'
group by job
having sum(sal) >= 2000
order by avg(sal) desc;
|
cs |
[문제 3] 전체 사원 가운데 직속 상관이 있는 사원의 수를 출력하라
[문제 3 답]
1
2
3
|
select count(*)
from emp
where mgr is not null;
|
cs |
[문제 4] emp테이블에서 이름, 급여, 커미션 금액, 총액(sal+comm) 구하여 총액이 많은 순서대로 출력
단 커미션이 null인 사람은 제외
[문제 4 답]
1
2
3
4
|
select ename, sal, comm, sal+comm as 총액
from emp
where comm is not null
order by sal+comm desc;
|
cs |
[문제 5] 각 부서별로 같은 업무를 하는 사람의 인원 수를 구하여 부서번호, 업무이름 ,인원 수 출력
[문제 5 답]
1
2
3
|
select count(*), deptno, job
from emp
group by deptno, job;
|
cs |
[문제 6] 사원이 한 명도 없는 부서의 이름 출력
[문제 6 답]
1
2
3
4
|
select d.dname
from dept d, emp e
where d.deptno = e.deptno(+) and
e.deptno is null;
|
cs |
[문제 7] 같은 업무를 하는 사람의 수가 3명인 업무와 인원 수 출력
[문제 7 답]
1
2
3
4
|
select deptno, count(*), job
from emp
group by deptno, job
having count(*) >= 3;
|
cs |
[문제 8] 사원번호가 7400 이상 7800이하인 사원 이름 출력
[문제 8 답]
1 2 3 | select ename from emp where empno between 7400 and 7800; | cs |