본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 29> reporting 함수에 대한 기출문제

by HYEHYE_SON 2024. 3. 29.
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 함수를 사용한 이 정답입니다. 

반응형