Tiny Star

📊DataBase/📈SQL

[🪪SQLD] 2과목 - SQL 활용 : 집합연산자/그룹함수/윈도우함 (24년 개정 요약)

청크 2024. 2. 22. 12:09

[집합연산자]

· 집합연산자

 -> 조인을 사용하지 않고 연관 데이터를 조회하는 방법 중 하나로 2개 이상의 질의 결과를 하나로 만들어 줌

 

· 집합연산자의 종류

 1) UNION (합집합) : 두 개의 테이블을 하나로 만드는 연산

   - 두 개의 테이블의 칼럼 수/데이터형식 모두 일치해야 함

   - 중복된 데이터는 1개로 처리하기 때문에 정렬 과정을 발생시킴

 2) UNION ALL(합집합)

   - UNION과 같지만 중복제거를 하지 않아 정렬을 유발하지 않음

 3) MINUS (차집합) : 두 개의 테이블에서 차집합을 조회

   - SELECT문에는 있고 뒤에 쓰는 SELECT문에는 없는 집합을 조회

 

[그룹 함수]

· 그룹함수 (Group Function)

 -> 특정 그룹에 대해 작업을 수행하고 결과를 반환하는 함수로 관계형 데이터 베이스에서 자주 사용(여러 행을 하나의 결과로 반환)

 -> 데이터 그룹화 및 집계작업을 수행할 때 유용

 

· 그룹함수의 종류

 1) ROLLUP

   - GROUP BY의 칼럼에 대해 Subtotal을 계산

   - GROUP BY구에 칼럼이 두 개 이상오면 순서에 따라 결과가 다름

 2) GROUPING

   - ROLLUP, CUBE, GROUPING SET에서 생성되는 합계 값을 구분하기 위해서 만들어진 함수

   - 소계, 합계 등이 계산되면 1을 반환하고 그렇지 않으면 0을 반환

 3) GROUPING SET

   - GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계 생성

   - GROUP BY에 나오는 칼럼의 순서와 관계없이 개별적으로 처리

 4) CUBE

   - 제시한 칼럼에 대해 결합 가능한 모든 집계를 계산

   - 다차원 집계를 제공하여 다양한 데이터 분석 가능

   - 조합할 수 있는 경우의 수가 모두 조합되는 것

 

 

 

[윈도우 함수]

· 윈도우 함수

 -> 행과 행 간의 관계를 정의하기 위해 제공되는 함수로 윈도우 함수를 사용하여 순위, 합계, 평균, 행 위치 등 조작이 가능

 

· 윈도우 함수의 구조

[ SELECT WINDOW_FOUNCTION (ARGUMENTS)

             OVER (PARTITION BY 칼럼

             ORDER BY WINDOWUNG절 FROM 테이블명; ]

 

 1) ARGUMENT (인수) : 윈도우 함수에 따라 0~N개의 인수를 설정

 2) PARTITION BY : 전체 집합을 기준에 의해 소그룹으로 나눔

 3) ORDER BY : 어떤 항목에 대해서 정렬

 4) WINDOWING : 행 기준의 범위를 지정

 

· WINDOWING 구조

 1) ROWS : 물리적 결과의 행의 집합을 지정

 2) RANGE : 논리적인 값에 의해 행 집합을 지정

 3) BETWEEN~AND : 윈도우 시작과 끝 위치를 지정

 4) UNBOUNDED PRECEDING : 윈도우 시작 위치가 첫 행임을 의미

 5) UNBOUNDED FOLLOWING : 윈도우 끝 위치가 마지막임을 의미

 6) CURRENT ROW : 윈도우 시작 위치가 현재 행임을 의미

 

· 순위 관련 윈도우 함수

 1) RANK : 특정항목, 파티션에 대해 순위를 계산(동일 순위는 동일 값 부여)

 2) DENSE_RANK : 동일한 순위를 하나의 건수로 계산

 3) ROW_NUMBER : 동일순위에 대해 고유 순위를 부여

 

· 집계 관련 윈도우 함수

 1) SUM / AVG : 파티션 별로 합계 / 평균을 계산

 2) COUNT : 파티션 별로 행 수를 계산

 3) MAX / MIN : 파티션 별로 최댓값 / 최솟값 계산

 

· 행 순서 관련 윈도우 함수

 1) FIRST_VALUE : 파티션에서 가장 처음에 나오는 값 (MIN과 동일)

 2) LAST_VALUE : 파티션에서 가장 나중에 나오는 값을 구함 (MAX)

 3) LAG : 이전 행을 가지고 옴

 4) LEAD : 윈도우에서 특정 위치의 행을 가지고 옴 (기본값 1)

 

· 비율 관련 윈도우 함수

 1) CUME_DIST

   - 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대한 누적

     백분율을 조회 (누적 분포상에 위치를 0~1 사이의 값을 가짐)

 2) PERCENT_RANK

   - 파티션에서 제일 먼저 나온 것은 0, 제일 늦게 나온 것을 1로하여

     값이 아닌 행의 순서 별 백분율을 조회

 3) NTILE

- 파티션별로 전체 건수를 인자 값으로 N등분한 결과를 조회

 4) RATIO_TO_REPORT

   - 전체 SUM에 대한 행 별 칼럼 값의 백분율을 소수점까지 조회