728x90
매일 SQLD 기출 문제 풀기 챌린지
문제30.
다음 주어진 테이블에 대해서 아래와 같은 결과값이 나오도록 SQL문의 빈칸에 들어갈 수 있는 내용을 고르시오.
[ 테이블명: T_TEST ]
DEPTNO | JOB | SAL |
10 | CLERK | 1300 |
10 | MANAGER | 2150 |
20 | CLERK | 1900 |
20 | ANALYST | 6000 |
20 | MANAGER | 2000 |
[결과]
DEPTNO | JOB | SUM(SAL) |
10 | CLERK | 1300 |
10 | MANAGER | 2150 |
10 | 3450 | |
20 | CLERK | 1900 |
20 | ANALYST | 6000 |
20 | MANAGER | 2000 |
20 | 9900 | |
13350 |
[SQL]
SELECT DEPTNO, JOB, SUM(SAL)
FROM T_TEST
GROUP BY ( );
① DEPTNO, JOB
② GROUPING SETS(DEPTNO, JOB)
③ ROLLUP(DEPTNO, JOB)
④ CUBE(DEPTNO, JOB)
해설해보기
■ 데이터 분석 함수 ROLLUP
SQL에서 ROLLUP 함수는 GROUP BY 구문과 함께 사용되어
다양한 수준의 총계를 계산하는데 사용할 수 있습니다.
ROLLUP 함수를 사용하면
GROUP BY 구문에서 사용된 열들을 기준으로 계층을 만들어 총계를 계산합니다.
결과는 계층적으로 표시되며, 각 수준에서의 총계가 포함됩니다.
쿼리 결과의 마지막 행에는 NULL 값이 존재하는데
이 부분에 모든 열에 대한 총계가 출력됩니다.
ROLLUP 함수에 대한 설명을 머리에 두고 문제를 확인해보면 답이 보입니다.
- 1번 : 그냥 DEPTNO 별, JOB 별 SAL에 대한 총계를 출력하기만 하기 때문에 답이 아닙니다.
- 2번 : GROUPING SETS()는 괄호 안에 직접적으로 입력된 컬럼에 대해서만 총계를 출력합니다.
이 때 모든 열에 대한 총계를 출력하기 위해서 () 같은 빈 괄호를 넣어줘야하는데, 지문에는 포함되어 있지 않기 때문에 결과와 맞지 않아서 답이 아닙니다.
- 4번 : CUBE() 함수는 총계들이 가장 위쪽에 출력되기 때문에 정답이 될 수 없습니다.
따라서
DEPTNO 별 JOB 별 총계와 전체 총계를 출력하는 ROLLUP 함수를 사용한 ③ 이 정답입니다.
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 31> nvl 함수에 대한 기출문제 (0) | 2024.03.31 |
---|---|
<SQLD 30> ntile 함수에 대한 기출문제 (0) | 2024.03.30 |
<SQLD 28> row_number() 함수에 대한 기출문제 (0) | 2024.03.28 |
<SQLD 27> grouping sets 에 대한 기출문제 (0) | 2024.03.27 |
<SQLD 26> outer 조인에 대한 기출문제 (2) | 2024.03.26 |