[오라클로 배우는 데이터베이스 입문] 7.5 연습문제

jychan99·2023년 7월 27일
0

Q1. EMP 테이블을 이용하여 부서 번호(DEPTNO), 평균급여(AVG_SAL), 최고 급여(MAX_SAL), 최저 급여(MIN_SAL), 사원수(CNT)를 출력합니다. 단 평균 급여를 출력할 때 소수점을 제외하고 각 부서 번호별로 출력하세요.

A

SELECT DEPTNO,
	FLOOR(AVG(SAL)) as AVG_SAL,
    MAX(SAL) as MAX_SAL,
    MIN(SAL) as MIN_SAL,
    COUNT(DEPTNO) as CNT
FROM EMP
GROUP BY DEPTNO;

Q2. 같은 직책(JOB)에 종사하는 사원이 3명 이상인 직책과 인원수를 출력하세요.

A

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

Q3. 사원들의 입사 연도(HIRE_YEAR)를 기준으로 부서별로 몇 명이 입사했는지 출력하세요.

A

SELECT SUBSTR(HIREDATE, 1, 4) as HIRE_YEAR, DEPTNO, COUNT(*) as CNT
FROM EMP
GROUP BY SUBSTR(HIREDATE, 1, 4), DEPTNO;

Q4. 추가 수당(COMM)을 받는 사원 수와 받지 않는 사원 수를 출력하세요.

A

SELECT CASE WHEN COMM = NULL THEN 'X'
            WHEN COMM > 0 THEN 'O'
            ELSE 'X'
        END as EXIST_COMM,
        COUNT(*) as CNT
FROM EMP
GROUP BY CASE WHEN COMM = NULL THEN 'X'
            WHEN COMM > 0 THEN 'O'
            ELSE 'X'
        END;

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

A

SELECT DEPTNO,
		SUBSTR(HIREDATE, 1, 4) as HIRE_YEAR,
        COUNT(*) as CNT,MAX(SAL) as MAX_SAL,
        SUM(SAL) as SUM_SAL,
        AVG(SAL) as AVG_SAL
FROM EMP
GROUP BY ROLLUP(DEPTNO, SUBSTR(HIREDATE, 1, 4))
ORDER BY DEPTNO;
profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글