Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/5월

22. 05. 31 - 소집계 함수 [ROLLUP , CUBE, GROUPING SETS, GROUPING] , 인덱스

giggs 2022. 6. 3. 10:11

 

 

집계 함수 - 소집계 함수

 

[ ROLLUP , CUBE, GROUPING SETS, GROUPING ]

 

 

 


 

 

 

기본 세팅 – GROUP BY

 

 

 

 

 

 

 


 

 

 

 

1. ROLLUP

 

  • 그룹별로 중간 집계 처리를 하는 함수
  • 오른쪽에서부터 한 개씩 지워가며 조회해주는 애 – 통계 내주는 애

 

 

 

 

 

 

 

# 총 3개의 그룹 형성

  1. ( DEPTNO, JON ) 2개 세트인 -  1개 그룹
  2. JOB 빼고 1개 그룹
  3. DEPTNO 빼고 1개 그룹

 


 

 

 

# 오른쪽에서부터 한 개씩 지워가며 조회해주는 애  통계 내주는 애

 

 

 

 

 

 

 

 


 

 

 

# GROUP BY로 했을 때는 ( DEPTNO, JON ) 2개 세트인 -  1개 그룹

 

 

 

 

 

 

 

 

 


 

 

 

 

 

2. CUBE

 

  • 그룹별 산출한 결과를 집계하는 함수
  •  CUBE는 모든 경우의 수에 대해서 통계를 내준다. - 조회를 해준다.

 

 

 

 

 

 


 

 

 

# 총 4개의 그룹 형성

  1. ( DEPTNO, JON ) 2개 세트인 -  1개 그룹
  2. JOB 빼고 1개 그룹
  3. DEPTNO 빼고 1개 그룹
  4. 모두 NULL인 경우 -  1개 그룹

 

 

 

 

 

 

 


 

 

 

 

3. GROUPING SETS

 

  • 이 친구로 한 번 //// 이 친구로 한 번 각각 한 번씩 해준다.
  • DEPYNO로만 그룹바이 하면 678 나오고
  • JOB만 그룹바이 하면 12345 나오고
  • 따로따로 조회하는 2개의 작업을 한 번에 해줄 수 있구나~

 

 

 

 

 

 

# 총 2개의 그룹 형성

  1. DEPTNO 그룹 1개
  2. JOB 그룹 1개

 

 

 

 


 

 

 

 

4. GROUPING 

 

  • ROLLUP, CUBE, GROUPING SETS 3개 함수에 대해 보조
  • 소집계애들에게 보조적으로 들어가는 친구

 

 

 

 

# 소집계 함수 이용 시 NULL이라고 뜨는 이유는? 

  • 소계를 내줄 때 그룹 지어지는 방식에 따라서 빈칸이 생기는데
  • 이렇게 강제적으로 생긴 NULL을 다른 방식으로 처리하기 위한 것이 GRUOPING

 

 

 

 

 

# 칼럼의 값이 NULL이 맞으면 1 반환

# 칼럼의 값이 NULL이 아니면 0 반환

 

 

 


 

 

 

## 응용해보기

 

 

 

 

 

 

 

# 원래 NULL이라고 출력되는 부분에 내가 조건으로 설정한 값이 출력됨을 확인 

 

 

 

 

## 소집계 완벽한 이해는 세미파이널 때 실습을 통해서 다시!

## 통계내는 방법에 도움을 주는 애들이 있구나 정도로 이해

 

 

 

- 소집계 끝 -

 

 


 

 

 

인덱스

 

  • 웬만한 테이블에는 인덱스가 모두 존재- 만들어주어야 한다.
  • 우리가 직접 인덱스를 만들어 주는 경우는 - 조회를 위한 테이블일 경우 -  주로 부여한다.
  • PRIMARY KEY , UNIQUE는 인덱스 자동 부여

 

 

 

 

 

 

 

## 인덱스 종류 2가지

  • UNIQUE 되어있는 애한테 만드는 인덱스와 아닌 인덱스

 

 

#1

 

 

#2

 

 

 

 

 

 


 

 

 


REVIEW


소집계 함수와 인덱스 이론에 대해 배워보았다.

단순히 그룹으로 지어서 하는 방법만 해보았는데
소집계 함수를 사용해보니 뭔가 되게 어려워진 느낌.
한편으로는
잘만 사용하면 GROUP BY를 여러 번 해서 얻어야 하는 결과들을
한 번에 쫙 얻을 수 있는 편리함도 느껴지고

어려움과 편리함이 공존하는 현재 상태 ㅎㅎ
통계를 내는 상황에서 실제 사용해보고
공부를 더 한다면
편리함 쪽으로 많이 기울듯하다!


인덱스 부분에서는 기본키나 유일 키로 지정하면
자동으로 인덱스 부여된다는 점이 새로웠다.

미니 플젝을 하면서도 느낀 점이지만
ORACLE DB에 대한 공부도
JAVA에 뒤처지지 않게 해야 할 것 같다.
내가 원하는 데이터를 뽑아오는 것은 물론이고
보다 효율적인 DB공간 활용과 원활한 기능 작동을 위하여.

후후 화이팅! :)