DB/Oracle

쌍용강북교육센터 국비 학원 Day 26일차 Oracle (GROUP BY, HAVING, GROUPING, ROLLUP)

Sik_J 2023. 2. 8. 17:51

 

쌍용 강북 교육센터 국비학원 Day 26일차

 

 

GROUP BY 절

 

보통 그룹함수와 함께 사용되어지고 같은 컬럼끼리의 연산이 필요할 때, 컬럼의 값이 같은것 끼리 그룹을 짓는다. 특정 컬럼을 기준으로 집계를 내는데 사용된다. order by 와 마찬가지로 컴마를 이용해 1차, 2차적으로 사용 가능하다. 또한 그룹으로 묶을 컬럼 값을 select 문에도 지정해주어야 한다.

 

 

 

group by 예제

 

 

 

 

 

 

GROUPING, ROLLUP, CUBE, GROUPING SETS 

grouping - 그룹핑이란 그룹으로 되어져있는지를 확인하는 명령어이다. 값을 출력해보면 0 또는 1만 나오는데 해당 칼럼이 그룹로 이루어져(묶여) 있으면 1, 없으면 0을 나타낸다.  

 

 

 

 

요약값 (rollup, cube, grouping sets)

 - group by rollup (a, b, c) 는 grouping sets( (a,b,c), (a,b), (a), ( ) ) 와 같다.

 group by rollup (a, b) 는 grouping sets( (a,b), (a), ( ) ) 와 같다. 
 

 - group by cube (a, b, c) 는 grouping sets( (a,b,c), (a,b), (b,c), (a,c), (a), (b), (c), ( ) ) 와 같다.

group by cube (a, b) 는 grouping sets( (a), (b), (c), ( ) ) 와 같다.

 

 

 

 

HAVING (그룹함수 조건절)

 

group by 절을 사용하여 그룹함수의 값을 나타내었을때, 그룹함수의 값이 특정 조건에 해당하는 것만 추출하고자 할 때는 where 절을 사용하는 것이 아니라 having 그룹함수 조건절을 사용 해야한다. (select 문의 처리순서 때문)

 

 

 

 

 

누적에 대한 TIP

누적으로된 값이 필요로 할 때 참고

 

 

 

 

 

sum (누적되어야 할 컬럼명) over (order by (누적되어질 기준이 되는 컬럼명) asc (or desc) )

 

sum (누적되어야 할 컬럼명) over (partition by (그룹화 되어질 컬럼명) order by (누적되어질 기준이 되는 컬럼명) asc (or desc) )
  

ntile 관련 참고 블로그 - https://goldswan.tistory.com/25