SQLD(SQL 개발자) 기출 · 그룹 함수

다음은 TAB1 테이블에 대한 SQL문이다. 위 쿼리의 실행 결과로 옳은 것은?
본문)
<SQL>
INSERT INTO TAB1 VALUES('A',100);
INSERT INTO TAB1 VALUES('B',200);
INSERT INTO TAB1 VALUES('C',300);
INSERT INTO TAB1 VALUES('C',400);
SELECT COUNT(*)
FROM (
    SELECT COL1, SUM(COL2)
    FROM TAB1
    GROUP BY ROLLUP(COL1), COL1
) SUB;

이 문제 풀어보기

정답 및 해설 보기

정답: 3번

ROLLUP(COL1) 자체가
→ GROUP BY COL1
→ + 전체 소계 (GROUP BY ())

그런데 ROLLUP(COL1), COL1 이라고 하면,
→ 마치 GROUP BY COL1, COL1 또는
→ GROUPING SETS ((COL1), (COL1), ()) 과 같은 효과를 줍니다.

즉, COL1로 그룹핑한 결과가 중복으로 2번 나오고,
전체 합계(ROLLUP)가 1번 더 추가됨

→ 하지만 Oracle은 중복된 GROUP BY COL1 구문을 자동으로 제거하지 않고 모두 집계로 처리합니다.
→ 이로 인해 총 7건이 나와야 할 것 같지만, 실제 쿼리 결과는 6건입니다.
이 단원 연속 풀기 · 그룹 함수개념서 「GROUP BY · HAVING」 읽기

이 단원 공개 기출 42문항

  1. 다음은 SALES 테이블의 일부이다. 아래 SQL의 결과로 올바른 데이터 셋을 고르시오. [그림]그룹 함수
  2. 급여가 2,000이상인 사원 중 부서별 급여의 합계 금액이 높은 순으로 정렬하려고 할 때 아래 쿼리에서 고쳐야할 부분은?그룹 함수
  3. 다음은 SALES 테이블의 일부 데이터이다. 다음 SQL을 실행했을 때 결과로 올바른 값은? [그림]그룹 함수
  4. 다음 SQL 실행 결과로 반환되는 부서 수는? [그림]그룹 함수
  5. 다음 SQL 결과로 조회되는 부서명으로 옳은 것은? [그림]그룹 함수
그룹 함수 기출 전체 보기 →