상세 컨텐츠

본문 제목

MSSQL - GROUPING_ID(Transact-SQL)

개발

by A+티스토리 2021. 1. 20. 14:38

본문

반응형

적용 대상: SQL Server(지원되는 모든 버전) Azure SQL Database

그룹 수준을 계산하는 함수입니다. GROUP BY 절이 지정된 경우 GROUPING_ID는 SELECT <select> 목록, HAVING 및 ORDER BY 절에만 사용할 수 있습니다.

 

구문

GROUPING_ID ( <column_expression>[ ,...n ] )

인수

<column_expression>
GROUP BY 절의 column_expression입니다.

반환 형식

int

설명

GROUPING_ID <column_expression>은 GROUP BY 목록의 식과 정확하게 일치해야 합니다. 예를 들어 DATEPART (yyyy, <column name>)를 기준으로 그룹화하는 경우에는 GROUPING_ID (DATEPART (yyyy, <column name>))를 사용하고, <column name>를 기준으로 그룹화하는 경우에는 GROUPING_ID (<column name>)를 사용하세요.

GROUPING_ID ()와 GROUPING () 비교

GROUPING_ID (<column_expression> [ , ...n ])는 각 출력 행의 열 목록에 있는 각 열에 대해 반환되는 동등 함수인 GROUPING (<column_expression>)을 0과 1로 구성된 문자열로 입력합니다. GROUPING_ID는 문자열을 밑이 2인 숫자로 해석하고 그에 해당하는 정수를 반환합니다. 예를 들어 다음 문을 살펴보세요: SELECT a, b, c, SUM(d),``GROUPING_ID(a,b,c)``FROM T GROUP BY <group by list>. 다음 표에서는 GROUPING_ID () 입력 및 출력 값을 보여 줍니다.

GROUPING_ID ()와 GROUPING () 비교집계된 열GROUPING_ID (a, b, c) 입력 = GROUPING(a) + GROUPING(b) + GROUPING(c)GROUPING_ID () 출력

a 100 4
b 010 2
c 001 1
ab 110 6
ac 101 5
bc 011 3
abc 111 7

GROUPING_ID ()의 기술적 정의

각 GROUPING_ID 인수는 GROUP BY 목록의 요소여야 합니다. GROUPING_ID ()는 최하위 N 비트가 lit인 integer 비트맵을 반환합니다. lit bit는 해당 인수가 지정된 출력 행에 대해 그룹화 열이 아님을 나타냅니다. 최하위 bit는 인수 N에 해당하고 N-1번째 최하위 bit는 인수 1에 해당합니다.

GROUPING_ID ()와 동일한 기능의 함수

단일 그룹화 쿼리의 경우 GROUPING (<column_expression>)은 GROUPING_ID (<column_expression>)와 같으며 둘 다 0을 반환합니다.

 

예제

A. GROUPING_ID를 사용하여 그룹화 수준 식별

다음 예에서는 AdventureWorks2012 데이터베이스에서 Name과 Title, Name, 및 Company Total별 직원 수를 반환합니다. GROUPING_ID()는 Title 열의 각 행에 대해 집계 수준을 식별하는 값을 생성합니다.

 

B. GROUPING_ID를 사용하여 결과 집합 필터링

간단한 예

다음 예제에서 title별 직원 수를 갖는 행만 반환하려면 AdventureWorks2012 데이터베이스의 HAVING GROUPING_ID(D.Name, E.JobTitle); = 0에서 주석 문자를 제거하세요. department별 직원 수를 갖는 행만 반환하려면 HAVING GROUPING_ID(D.Name, E.JobTitle) = 1;에서 주석 문자를 제거하세요.

 

 

집계 데이터 처리시, 가끔 사용하는 구문...

 

반응형

관련글 더보기

댓글 영역