Skip to content

그룹함수 #23

@Sam1000won

Description

@Sam1000won

그룹함수

  • 그룹 함수는 테이블의 전채 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수
  • 소계 및 총계 등을 구하기 위해서 그룹 함수를 사용하면 단일 DML만으로도 원하는 작업 가능

유형

  • Rollup
    • group by a,b union all group by a union all = group by rollup(a,b)
  • cube
    • group by a,b union all group by a union all group by b union all 전체 집합 결과
  • grouping sets
    • group by grouping sets(a,b) = group by a union all group by b

ROLLUP

  • 지정된 컬럼의 소계 및 총계를 구하기 위해 사용하는 그룹 함수
  • 지정 컬럼 수보다 하나 더 큰 레벨만큼 중간 집계 값이 생성
  • 지정 컬럼은 계층별로 구성되어 순서가 바뀌면 수행 결과 값이 바뀜

문법

  • select 컬럼, 집계함수 from 테이블 명 [where] group by [컬럼명] ROLLUP (그룹화할 컬럼) [having][order by]
  • 소계 집계 대상이 되는 컬럼을 RoLLUP 키워드 뒤에 기재
  • 소계 집계 대상이 아닌 경우 group by 키워드 뒤에 기재
  • slect 뒤에 컬럼이 포함 되는 컬럼이 group by 또는 rullup 키워드 뒤에 기재 되어야 함

CUBE

  • 결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수
  • 내부적으로 대상 컬럼의 순서를 변경하여 또 한번 쿼리를 수행
  • 인자로 주어진 컬럼의 결합 가능한 모든 조합에 대해서 집계를 수행하므로 다른 함수보다 시스템 부하가 크다

문법

  • select 컬럼명 집계 함수 from 테이블 where group by [컬럼명] cube (그룹화 할 컬럼) [having][order by]
  • 소계 집계 대상이 되는 컬럼을 cube 키워드 뒤에 기재
  • 소계 집계 대상이 아닌경우 group by 키워드 뒤에 기재
  • select 뒤에 포함되는 컬럼이 group by or cube 키워드 뒤에 기제

grouping sets

  • 집계 대상 컬럼에 대한 소계를 구할 수 있는 함수
  • roullup과 달리 컬럼 간 순서와 무결과한 결과
  • 다양한 소계 집합 만들기 가능

문법

  • select 컬럼명, 집계 함수 from 테이블 [where] group by [컬럼] grouping sets (그룹할 컬럼) havaing orderby
  • 소계 집계 대상이 되는 컬럼을 grouping sets 키워드 뒤에 기재
  • 소계 집계 대상이 아닌 경우 group by 키워드 뒤에 기재
  • select 뒤에 포함되는 컬럼 이 group by or grouping sets 키워드 뒤에 기재되어야 함
  • 그룹화 할 열에 빈 괄호가 포함 되는 경우에 전체 데이터에 대한 집계를 추가함

grouping

  • rollup, cube, grouping sets 함수를 사용하는 경우 컬럼의 소계 여부를 확인 할 수 있다
  • select 절과 having 절에도 사용가능

문법

  • grouping (컬럼명)
  • 컬럼이 소계 처리된 결과에는 1을 반환
  • 컬럼이 소계 처리안된 결과에는 0을 반환

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions