Oracle 문제3
(1) 부서별 평균 급여가 1000 이상인 부서의 부서번호는?
- SQL> SELECT deptno
2 FROM emp
3 GROUP BY deptno
4 HAVING avg(sal) >= 1000; - DEPTNO
----------
10
20
30
(2) salesman의 부서별 평균 급여가 1500이상인 부서의 부서 번호는?
- SQL> SELECT deptno, job, avg(sal)
2 FROM emp
3 WHERE job='SALESMAN'
4 GROUP BY deptno, job
5 HAVING avg(sal) > 1500; - no rows selected
- SQL> SELECT deptno, job, avg(sal)
2 FROM emp
3 GROUP BY deptno, job
4 HAVING job='SALESMAN' AND avg(sal) > 1500; - no rows selected
(3) 사번이 7700 이상인 사원들의 직종(job) 별 사원 수는 ?
- SQL> SELECT job, count(*) "명"
2 FROM emp
3 WHERE empno >= 7700
4 GROUP BY job; - JOB 명
--------- ----------
ANALYST 2
CLERK 3
MANAGER 1
PRESIDENT 1
SALESMAN 1
(4) 메니저(mgr)별로 사원 수와 사원들의 봉급 총합은?
- SQL> SELECT count(*), sum(sal), mgr
2 FROM emp
3 GROUP BY mgr; - COUNT(*) SUM(SAL) MGR
---------- ---------- ----------
2 6000 7566
5 6550 7698
1 1300 7782
1 1100 7788
3 8275 7839
1 800 7902
1 5000 - 7 rows selected.
(5) 메니저별 사원의 봉급평균이 높은 순으로 mgr을 출력하시오.
- SQL> SELECT avg(sal), mgr
2 FROM emp
3 GROUP BY mgr
4 ORDER BY avg(sal) DESC; - AVG(SAL) MGR
---------- ----------
5000
3000 7566
2758.33333 7839
1310 7698
1300 7782
1100 7788
800 7902 - 7 rows selected.
(6) 직종별로 봉급이 가장 낮은 사원의 이름을 출력하시오.
- SQL> SELECT e.ename, e.job, e.sal
2 FROM emp e,
3 (SELECT job, MIN(sal) min_sal
4 FROM emp
5 GROUP BY job) s
6 WHERE e.job=s.job AND e.sal=s.min_sal; - ENAME JOB SAL
---------- --------- ----------
SMITH CLERK 800
WARD SALESMAN 1250
MARTIN SALESMAN 1250
CLARK MANAGER 2450
SCOTT ANALYST 3000
KING PRESIDENT 5000
FORD ANALYST 3000 - 7 rows selected.
Oracle 문제4
- emp, dept, salgrade 테이블에 대하여 다음 질의를 수행하시오.
(1) 봉급의 등급이 3인 사원의 사번과 이름은?
- SQL> SELECT e.empno, e.ename
2 FROM emp e, salgrade s
3 WHERE e.sal BETWEEN s.losal AND s.hisal
4 AND s.grade=3; - EMPNO ENAME
---------- ----------
7499 ALLEN
7844 TURNER
(2) 현재 사원들이 받는 봉급 중 등급별로 최고 급여는?
- SQL> SELECT s.grade, MAX(e.sal)
2 FROM emp e, salgrade s
3 WHERE e.sal BETWEEN s.losal AND s.hisal
4 GROUP BY s.grade; - GRADE MAX(E.SAL)
---------- ----------
1 1100
2 1300
3 1600
4 3000
5 5000
(3) 부서별 봉급 등급별 최고 급여는?
- SQL> SELECT e.deptno, s.grade, MAX(e.sal)
2 FROM emp e, salgrade s
3 WHERE e.sal BETWEEN s.losal AND s.hisal
4 GROUP BY e.deptno, s.grade; - DEPTNO GRADE MAX(E.SAL)
---------- ---------- ----------
10 2 1300
10 4 2450
10 5 5000
20 1 1100
20 4 3000
30 1 950
30 2 1250
30 3 1600
30 4 2850 - 9 rows selected.
(4) 사번, 사원이름, 부서번호, 부서이름, 봉급 등급을 출력하시오.
- SQL> SELECT e.empno, e.ename, d.deptno, d.dname, s.grade
2 FROM emp e, dept d, salgrade s
3 WHERE e.deptno = d.deptno
4 AND e.sal BETWEEN s.losal AND s.hisal; - EMPNO ENAME DEPTNO DNAME GRADE
---------- ---------- ---------- -------------- ----------
7369 SMITH 20 RESEARCH 1
7900 JAMES 30 SALES 1
7876 ADAMS 20 RESEARCH 1
7521 WARD 30 SALES 2
7654 MARTIN 30 SALES 2
7934 MILLER 10 ACCOUNTING 2
7844 TURNER 30 SALES 3
7499 ALLEN 30 SALES 3
7782 CLARK 10 ACCOUNTING 4
7698 BLAKE 30 SALES 4
7566 JONES 20 RESEARCH 4
7788 SCOTT 20 RESEARCH 4
7902 FORD 20 RESEARCH 4
7839 KING 10 ACCOUNTING 5 - 14 rows selected.
이 글은 스프링노트에서 작성되었습니다.