본문 바로가기
Database

오라클로 배우는 데이터베이스 입문, 둘째 마당 07 - 1 ~ 5번 연습 문제

by Jiwon_Loopy 2025. 4. 27.
반응형

부서 번호, 평균 급여, 최고 급여, 최저 급여, 사원 수를 출력, 평균 급여를 출력할 때 소수점을 제외하고 각 부서별로 출력


SELECT DEPTNO, 
    TRUNC(AVG(SAL),0) AS AVG_SAL, 
    MAX(SAL) AS MAX_SAL, 
    MIN(SAL) AS MIN_SAL, 
    COUNT(SAL) AS CNT_SAL
FROM EMP
GROUP BY DEPTNO;

출력 결과

30	1566	2850	950	6
20	2175	3000	800	5
10	2916	5000	1300	3

같은 직책에 종사하는 사원이 3명 이상인 직책과 인원수


SELECT JOB, COUNT(*)
FROM EMP
GROUP BY JOB
HAVING COUNT(*) >= 3;

출력 결과

CLERK	4
SALESMAN	4
MANAGER	3

사원들의 입사 연도를 기준으로 부서별로 몇 명이 입사했는지 출력


SELECT TO_CHAR(HIREDATE,'YYYY') AS HIRE_YEAR, DEPTNO, COUNT(*) AS CNT
FROM EMP
GROUP BY 
    TO_CHAR(HIREDATE,'YYYY'), DEPTNO;
    
    

출력 결과

1987	20	2
1982	10	1
1980	20	1
1981	10	2
1981	20	2
1981	30	6

추가 수당을 받는 사원 수와 받지 않는 사원 수를 출력


SELECT 
    NVL2(COMM,'O','X') AS EXIST_COMM, COUNT(*) AS CNT
FROM EMP
GROUP BY NVL2(COMM,'O','X');

출력 결과

X	10
O	4

각 부서의 입사 연도별 사원 수, 최고 급여, 급여 합, 평균 급여를 출력하고 각 부서별 소계와 총계를 출력


SELECT
    DEPTNO, TO_CHAR(HIREDATE,'YYYY') HIRE_YEAR, COUNT(*) AS CNT, MAX(SAL) AS MAX_SAL, SUM(SAL) AS SUM_SAL, AVG(SAL) AS AVG_SAL
FROM EMP
GROUP BY DEPTNO, ROLLUP(TO_CHAR(HIREDATE,'YYYY'));

출력 결과

10	1981	2	5000	7450	3725
10	1982	1	1300	1300	1300
10		3	5000	8750	2916.666666666666666666666666666666666667
20	1980	1	800	800	800
20	1981	2	3000	5975	2987.5
20	1987	2	3000	4100	2050
20		5	3000	10875	2175
30	1981	6	2850	9400	1566.666666666666666666666666666666666667
30		6	2850	9400	1566.666666666666666666666666666666666667
728x90
반응형