728x90
반응형
테이블 - 1번 문제
<STUDENT> 테이블
1. 각 학과에서 가장 키가 큰 학생의 학번, 이름, 키 출력
SELECT S.STU_NO, S.STU_NAME, S.STU_DEPT, S.STU_HEIGHT
FROM STUDENT S
INNER JOIN(
SELECT STU_DEPT, MAX(STU_HEIGHT) AS HEIGHT
FROM STUDENT S
GROUP BY STU_DEPT
) S2 ON S.STU_HEIGHT = S2.HEIGHT
AND S.STU_DEPT = S2.STU_DEPT
;
테이블 - 2~5번 문제
<EMP> 테이블
<DEPT>테이블
2. 각 부서 별 입사일이 가장 오래된 사원을 한 명씩 선별해 사원번호, 사원명, 부서번호, 입사일을 출력하라.
SELECT E.EMPNO AS 사원번호, E.ENAME AS 사원명, E.DEPTNO AS 부서번호, E.HIREDATE AS 입사일
FROM EMP E
INNER JOIN (
SELECT DEPTNO, MIN(HIREDATE) AS HIREDATE
FROM EMP
WHERE DEPTNO IS NOT NULL
GROUP BY DEPTNO
) E2 ON E.DEPTNO = E2.DEPTNO
AND E.HIREDATE = E2.HIREDATE
ORDER BY E.DEPTNO;
3. 1981년 5월 31일 이후 입사자 중 커미션이 NULL이거나 0인 사원의 커미션은 500으로 그렇지 않으면 기존 커미션을 출력하라.
SELECT ENAME, HIREDATE, DECODE(COMM, NULL, 500, 0, 500, COMM) AS COMM
FROM EMP
WHERE HIREDATE > '81/05/31'
ORDER BY HIREDATE;
4. 1981년 6월 1일 ~ 1981년 12월 31일 입사자 중 부서명이 SALES인 사원의 부서번호, 사원명, 직업, 입사일을 출력하라.
SELECT E.DEPTNO AS 부서번호, E.ENAME AS 사원명, E.JOB AS 직업, E.HIREDATE AS 입사일
FROM EMP E
INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE HIREDATE BETWEEN '81/06/01' AND '81/12/31'
AND D.DNAME = 'SALES'
ORDER BY HIREDATE;
5. 1980년~1982년 사이에 입사한 각 부서별 입사년도별 사원 수, 부서번호, 부서명 을 출력하라.
▶SUM/COUNT/DECODE 자유롭게 사용
SELECT
D.DEPTNO AS 부서번호, D.DNAME AS 부서명,
COUNT(DECODE(TO_CHAR(E.HIREDATE, 'YYYY'), '1980', 123)) "입사 1980",
SUM(DECODE(TO_CHAR(E.HIREDATE, 'YYYY'), '1981', 1, 0)) "입사 1981",
SUM(DECODE(TO_CHAR(E.HIREDATE, 'YYYY'), '1982', 1, 0)) "입사 1982"
FROM EMP E
INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO
GROUP BY D.DEPTNO, D.DNAME;
728x90
반응형
'HRD_훈련 > 실습' 카테고리의 다른 글
[SQL] JOIN 실습 5 (22일차) (0) | 2023.06.15 |
---|---|
[SQL] JOIN 실습 4 (22일차) (0) | 2023.06.15 |
[SQL] JOIN 실습 2 (20일차) (0) | 2023.06.13 |
[SQL] JOIN 실습 1 (20일차) (0) | 2023.06.13 |
[SQL] SQL 함수 실습 (19일차) (0) | 2023.06.12 |