문과생의 우당탕탕 공부 기록

10 . GROUPING SET ) 조인 집계를 활용하기, GROUP BY 종류 본문

SQL 공부/조인과 집계 데이터

10 . GROUPING SET ) 조인 집계를 활용하기, GROUP BY 종류

드르렁쿨쿨 2023. 1. 18. 00:36

고급조인집계 파트가 10부터 시작된다.

 

GROUPING SET 절

- 의미: GROUPIING SET절을 사용하여 여러 개의 UNION ALL을 이용한 SQL과 같은 결과를 도출할 수 있다.

 

 

우선 SALES라는 테이블을 만들어보자

BRAND라는 항목은 글자로, 근데 NOT NULL

SEGMENT도 동일.

QUANTITY 항목은 숫자인데, NOT NULL

여기서 PRIMARY KEY 설정은 (BRAND, SEGMET)로.

 

SALES라는 테이블에 순서대로 BRAND, SEGMENT, QUANTITY 를 넣을 것이다.

 

 

 

 

잘 만들어졌는지 확인해보자

굿굿

 

GROUPING SET 절 학습 전 준비 - 2개 컬럼 GROUP BY 

BRAND와 SEGMENT 순으로 분류된다.

(근데 아직도 왜 XYZ와 프리미엄 베이직 순서가 저렇게 되는지 모르겠다 ㅜ 아시는 분 댓글달아주세요)

 

 

 

GROUPING SET 절 학습 전 준비 - 1개 컬럼 GROUP BY 

각각의 BRAND 별, SEGMENT별로 그룹바이를 할 수 있다.

BRAND별로 그룹바이를 진행하면 -> ABC의 총계, XYZ의 총계

 SEGMENT 별로 그룹바이를 진행하면 -> PREMIUM의 총계, BASIC 총계

전체 SUM을 조회하면, 합계가 나온다.

 

 

 

GROUPINF SET 절 학습 전 준비 - UNION ALL의 활용

UNION ALL 을 이용하여 BRAND,SEGMENT기준, BRAND기준, SEGMENT기준, 전체기준으로 QUATNTITY 합계의 값을 구할 수 있다.

일단 굉장히 긴 SQL문이 나왔다.

그리고 중복되는 것도 많다.

문제점

1. 동일한 테이블을 4번씩이나 읽고있다. -> 성능 저하 가능성이 존재

2. 너무 SQL문이 길어진다. -> 복잡해진다.-> 유지나 보수가 용이하지않다. 

*패캠 선생님 말씀을 인용했습니다.

그래서 중복도 제거하고, 한번에 편하게 그룹을 나눌 수 있는

GROUP BY함수를 배워보자.

 

 

GROUPING SET절 실습

GROUPING SETS절은

- 특정 항목에 대한 소계를 계산하는 함수이다.

 

BRAND, SEGMENT, SUM 세 가지 항목을 뽑을건데, 

BRAND, SEGMENT별

BRAND별

SEGMENT별

총합계  *()표시는 총합계를 의미한다.

 

GROUPING SET절 실습 - GROUPING 함수의 활용

GROUPINT 함수: 해당 컬럼이 집계에 사용되었으면 0, 그렇지 않으면 1을 리턴한다.

 

한글 제목을 붙여주어서, 더 이해가 쉽도록 돕는다.

 

GROUP BY 함수와 DISTINCT 함수의 차이점도 다음에 작성해보도록 하겠다.

 

GROUPING SETS 함수
= 세트

GROUPING SETS 함수에 대해서 쉽게 설명하면, 말 그대로 그냥 세트이다

 

후에 ROLLUP, CUBE 등 여러개를 다 쓰고 비교를 할 예정이지만, 쉽게 이해하기위해 내가 공부하면서 사용했던 표를 첨부하겠다.

마지막에 나머지 절의 공부가 끝나면 한번 싹 정리해야겠다.

Comments