SQL- 그룹 함수

박현·2022년 10월 20일
0

SQL

목록 보기
22/34
post-custom-banner

ANSI/ISO SQL 표준은 데이터 분석을 위해서 다음의 세가지 함수를 정의하고 있다.

  • AGGREGATE FUNCTION
  • GROUP FUNCTION
  • WINDOW FUNCTION

AGGREGATE FUNCTION

: GROUP AGGREGATE FUNCTION이라고도 부르며 ,그룹함수의 한 부분으로 분류할 수 있다.
COUNT, SUM, AVG, MAX, MIN외 각종 집계함수들이 포함돼 있다.


GROUP FUNCTION

ROLLUP함수, CUBE함수, GROUPING SETS함수가 있다. 하나씩 알아보도록 하자.

1. ROLLUP 함수

: GROUP BY의 확장된 형태로 사용하기 쉬우며 병렬로 수행가능하여 계층적 분류를 포함하고 있는 데이터의 집계에 적합하다.
중요한 것은, ROLLUP의 인수는 계층구조이므로 인수 순서가 바뀌면 수행 결과도 바뀌게 되므로 인수의 순서에도 주의해야 한다.

부서명과 업무명을 기준으로 사원수와 급여의 합을 출력하시오.

입력✏️

SELECT B.DNAME
      , A.JOB
      ,COUNT(*) AS EMPCNT
      ,SUM(A.SAL) AS SALSUM
  FROM EMP A, DEPT B
 WHERE A.DEPTNO = B.DEPTNO
GROUP BY ROLLUP (B.DNAME, A.JOB);

출력🖥️

2. CUBE 함수

: 결합가능한 모든 값에 대해 다차원적인 집계를 생성하게 되므로 ROLLUP에 비해 다양한 데이터를 얻는 장점이 있는 반면, 시스템에 부하를 많이 주는 단점이 있다.

입력✏️

SELECT CASE GROUPING (B.DNAME) WHEN 1 THEN 'ALL DEPARTMENTS' ELSE B.DNAME END AS DNAME
      , CASE GROUPING (A.JOB) WHEN 1 THEN 'ALL JOBS' ELSE A.JOB END AS JOB
      ,COUNT(*) AS EMPCNT
      ,SUM(A.SAL) AS SALSUM
  FROM EMP A, DEPT B
 WHERE A.DEPTNO = B.DEPTNO
GROUP BY CUBE (B.DNAME, A.JOB)
ORDER BY B.DNAME, A.JOB;

출력🖥️

3. GROUPING SETS

: 원하는 부분의 소계만 손쉽게 추출할 수 있는 장점이 있다.

입력✏️

SELECT CASE GROUPING (B.DNAME) WHEN 1 THEN 'ALL DEPARTMENTS' ELSE B.DNAME END AS DNAME
      , CASE GROUPING (A.JOB) WHEN 1 THEN 'ALL JOBS' ELSE A.JOB END AS JOB
      ,COUNT(*) AS EMPCNT
      ,SUM(A.SAL) AS SALSUM
  FROM EMP A, DEPT B
 WHERE A.DEPTNO = B.DEPTNO
GROUP BY GROUPING SETS (A.JOB, B.DNAME)
ORDER BY B.DNAME, A.JOB;

출력🖥️


WINDOW FUNCTION

분석함수나 순위함수로도 알려진 윈도우함수는 데이터 웨어하우스에서 발전한 기능이며 자세한 내용은 다음 글에서 알아보도록하자.

post-custom-banner

0개의 댓글