티스토리 뷰

1. GROUPING() - 역할

그룹핑 쿼리에 사용하는 함수로 컬럼 값이 NULL일 경우 1 , NULL이 아닐 경우 0을 반환합니다

2. GROUPING() - 기본 테이블

◈ TEST_TABLE_ONE


 IDX

NAME

ID

 DEPT

AMT

 1

테스트1

test1

 test_d1

1000

 2

테스트2

test2

 test_d1

2000

 3

테스트3

test3

 test_d2

 2000 

 4

테스트4

test4

 test_d2

 4000 

 5

테스트5

test5

 test_d2

 5000 


3. GROUPING() - SQL 문장

◈ SQL

1
2
3
4
5
SELECT DEPT
      ,SUM(AMT)
      ,DECODE(GROUPING(NAME),1,'부서합계',NAME) AS NAME 
         FROM TEST_TABLE_ONE
            GROUP BY ROLLUP(DEPT,NAME)



 

◈ 결과 테이블

 

 

 DEPT

SUM(AMT)

NAME

test_d1

1000 

테스트1

test_d1

2000 

테스트2

test_d1

300

 부서합계

test_d2

2000 

테스트3

test_d2

3000 

테스트4

 test_d2

4000 

 테스트5

 test_d2

9000 

부서합계

 

12000 

부서합

 

 

◈ 설명

 

 

 ROLLUP을 활용하여 DEPT와 NAME을 기준으로 누적 합계를 구하는 부분에서 이름이 없는 경우 즉 NAME  

 컬럼이 NULL 일 때 1을 반환합니다


 그래서 위에서 처럼 DECODE를 활용하여 1일 경우에는 '부서합계'라고 NAME 컬럼을 채워 줍니다 

 


 

 



 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday