SQL S3 · SQL (SQLD)
서브쿼리·집합 연산·ROLLUP 으로 한 번에 묻고 묶기
서브쿼리와 ROLLUP 은 결과 행이 몇 개인지, 어떤 값이 나오는지를 머릿속으로만 세면 틀리기 쉽습니다. NOT IN 에 NULL 이 섞이면 결과가 0행이 되는 함정처럼, 직접 돌려 보면 한 번에 이해되는 동작이 많습니다.
같은 결과를 내면 서브쿼리 대신 조인이나 EXISTS 로 써도 정답입니다. ROLLUP 의 소계 행은 NULL 로 보이므로, 순서를 맞출 때 NULL 이 어디로 가는지도 함께 확인하세요.
과제 목록
- 전체 평균보다 많이 받는 사원
- 부서별 최고 급여자
- 사원이 없는 부서
- 부하 직원이 없는 사원
- 두 부서의 직무 합치기
- 부서별 소계와 총계
- 소계 행에 이름 붙이기
과제마다 SELECT 를 쓰고 실행하면 바로 채점합니다. 여러 문장을 ; 로 이어 써도 되고, 채점은 마지막 문장의 결과로 합니다. 막히면 힌트를 먼저 보고, 그래도 어려우면 모범 답안과 해설을 여세요. 날짜는 YYYY-MM-DD 로 보입니다(실제 Oracle 의 기본 표시는 환경 설정에 따라 다릅니다).
SQL S3SQL 실습장
서브쿼리·집합 연산·ROLLUP 으로 한 번에 묻고 묶기
0 / 7 과제 정답
Oracle 문법 · 실제 Oracle 결과와 대조
예제 테이블 보기: EMP · DEPT · SALGRADE펼치기
EMP · 14행
- EMPNONUMBER(4)
- ENAMEVARCHAR2(10)
- JOBVARCHAR2(9)
- MGRNUMBER(4)
- HIREDATEDATE
- SALNUMBER(7,2)
- COMMNUMBER(7,2)
- DEPTNONUMBER(2)
사원 14명. KING 은 관리자(MGR)가 없고, COMM 은 영업직만 있다(TURNER 는 0).
DEPT · 4행
- DEPTNONUMBER(2)
- DNAMEVARCHAR2(14)
- LOCVARCHAR2(13)
부서 4개. 40번 OPERATIONS 에는 사원이 없다.
SALGRADE · 5행
- GRADENUMBER
- LOSALNUMBER
- HISALNUMBER
급여 등급 5단계. EMP.SAL 이 LOSAL~HISAL 사이면 그 등급이다(Non-EQUI 조인 예제).
과제 1 / 7
전체 평균보다 많이 받는 사원
급여가 전체 사원 평균 급여보다 많은 사원의 이름과 급여를 급여가 높은 순(같으면 이름 순)으로 출력하시오.
Ctrl + Enter 로도 실행