• [SQLD] 그룹함수

    2025. 2. 25.

    by. hyunji1109

    개념

    • 숫자함수 중 여러값을 전달하여 하나의 요약값을 출력하는 다중행 함수
    • 수학/통계 함수들(기술통계 함수)
    • GROUP BY 절에 의해 그룹별 연산 결과를 리턴 함
    • 반드시 한 컬럼만 전달
    • NULL 은 무시하고 연산


    COUNT

    • 행의 수를 세는 함수
    • 대상 컬럼은 * 또는 단 하나의 컬럼만 전달 가능(* 사용 시 모든 컬럼의 값이 NULL일 때만 COUNT 제외)
    • 문자, 숫자, 날짜 컬럼 모두 전달 가능
    • 행의 수를 세는 경우 NOT NULL 컬럼을 찾아 세는 것이 좋음(PK 컬럼)

     

    문법

     

     

    👉 각 컬럼의 COUNT 결과

    👉 NULL을 포함한 컬럼은 전체 행의 수와 다르게 출력됨

     

     

    SUM

    • 총 합 출력
    • 숫자 컬럼만 전달 가능

     

    👉 급여 전체 총 합

     

     

    AVG

    • 평균 출력
    • 숫자 컬럼만 전달 가능
    • NULL을 제외한 대상의 평균을 리턴하므로 전체 대상 평균 연산 시 주의

     

    문법

     

    👉 평균 계산 결과

     

    👉 AVG를 사용하면 NULL을 제외한 나머지에 대한 평균(4명에 대한) 리턴, 공식에 의해 직접 계산한 평균은 14명에 대한 평균

    👉 NVL 함수를 사용하여 NULL을 0으로 치환후 평균을 구하면 총 14명에 대한 평균과 같아짐

     

     

    MIN/MAX

    • 최대, 최소 출력
    • 날짜, 숫자, 문자 모두 가능(오름차순 순서대로 최소, 최대 출력)

     

    문법

     

     

    👉 각 컬럼의 최대, 최소

     

     

    VARIANCE / STDDEV

    • 평균과 표준편차
    • 표준편차는 평균값의 루트값


    문법

     

    👉 분산과 표준편차

     

     


    GROUP BY FUNCTION

    • GROUP BY 절에 사용하는 함수
    • 여러 GROUP BY 결과를 동시에 출력(합집합)하는 기능
    • 그룹핑 할 그룹을 정의(전체 소계 등)

     

    👉 본 GROUP BY 기능 : 그룹별 연산값만 출력되므로 전체 소계와 함께 출력될 수 없음

     


    1. GROUPING SETS(A, B, …)

    • A별, B별 그룹 연산 결과 출력
    • 나열 순서 중요하지 X
    • 기본 출력에 전체 총계는 출력되지 X
    • NULL 혹은 () 사용하여 전체 총 합 출력 가능

     

    👉 DEPTNO별 SAL의 총 합 결과와 JOB별 총 합 결과의 합집합

    👉 GROUPING SETS에 나열한 대상에 대해 GROUP BY의 결과를 출력해 줌

     

     

    👉 UNION ALL로 대체 가능

     

     

     

    👉 부서별 급여 총 합과, 업무별 급여 총합, 그리고 전체 급여의 합을 출력

     

     

     

    2. ROLLUP(A, B)

    • A별, (A, B)별, 전체 그룹 연산 결과 출력
    • 나열 대상의 순서가 중요함
    • 기본적으로 전체 총계가 출력됨

     

    👉 ROLLUP(DEPTNO, JOB -> DEPTNO별, (DEPTNO, JOB)별, 전체 연산 결과 출력

     

     

    👉 UNION ALL로 대체 가능

     

     

    3. CUBE(A,B)

    • A별, B별, (A, B)별, 전체 그룹 연산 결과 출력됨
    • 그룹으로 묶을 대상의 나열 순서 중요하지 않음
    • 기본적으로 전체 총 계가 출력됨

     

    👉 DEPTNO별, JOB별, (DEPTNO, JOB)별, 전체 급여의 총 합 출력

     

     

    👉 UNION ALL로 대체

     

     

    👉 GROUPING SETS로 대체

     

     

     

     

    출처: https://youtu.be/hLvv0GN0rT8?si=v8IaFxc-6STJ1gnD

    'CS > SQL' 카테고리의 다른 글

    [SQLD] TOP N QUERY  (0) 2025.02.26
    [SQLD] 윈도우 함수  (0) 2025.02.26
    [SQLD] 집합 연산자  (0) 2025.02.24
    [SQLD] 서브쿼리  (0) 2025.02.24
    [SQLD] 표준조인  (0) 2025.02.23

    댓글