본문 바로가기

개발/DB

[mssql] ROLLUP() 그룹별 합계 구하기, GROUPING_ID() 사용법

반응형
1
2
3
select num, groupname, sum(price * amount) as '비용'
from buyTb1
group by ROLLUP(groupname, num);
cs
 
중간 NULL로 되어 있는 것이 각 GROUPNAME 별 소 합계를 의미한다.
마지막은 소합계의 합계, 즉 총합계가 나왔다.
 
 
1
2
3
4
select groupname, sum(price * amount) as '비용'
from buyTb1
group by rollup(groupname);
 
cs

GROUP BY에서 그룹이름으로 묶어주면 각 그룹 별 소합계, 총 합계만 볼 수 있다.

 

 

1
2
3
4
select groupname, sum(price * amount) as '비용',
GROUPING_ID(groupname) as '추가행여부'
from buyTb1
group by rollup(groupname);
cs

 

 

 

 

 

데이터인지 합계인지 한눈에 알기 위해서는 GROUPING_ID() 함수를 사용할 수 있다.

GROUPING_ID() 함수의 결과가 0이면 데이터, 1이면 합계를 위해서 추가된 열이다. 

 

 

 

이것이 SQL SERVER다 STUDY 

반응형