절차형SQL
데이터 분석 함수의 정의
- 관계형 데이터베이스에서는 단일행 기준의 처리가 주로 이루어지나 총합, 평균 등의 데이터 분석은 복수 행 기준의 데이터를 모아서 처리
- 다중행 처리를 목적으로 하는 다중 행 함수가 존재
데이터 분석 함수의 특성
- 단일행을 기반으로 산출하지 않고 복수 행을 그룹별로 모아 놓고 그룹당 단일 계산 결과를 반환
- GROUP BY 구문을 활용하여 복수행을 그룹핑
데이터 분석 함수의 유형
- 데이터 튜플 간의 상호 연관 및 계산 분석을 위한 세 가지
- 집계 함수
- 그룹 함수
- 윈도우 함수
- 집계 함수는 명령어도 상대적으로 단순하며 이를 기본으로 하여 그룹 함수나 윈도우 함수에도 적용
- 집계 함수는 그룹 함수의 한 부분
집계 함수의 구문
- GROUP BY 구문 뒤에 테이블을 구분하는 컬럼을 기재하여 그룹화
- HAVING 구문은 WHERE 조건으로 지정된 데이터 집합으로 부터 그룹화 된 집합에 대한 조건 선택 시에 사용
집계함수의 분류
- COUNT(입력값)
- 복수 행의 줄 수
- SUM(입력값)
- 복수 행의 해당 컬럼 간의 합계
- AVG(입력값)
- 복수 행의 해당 컬럼 간의 평균
- MAX(입력값)
- 복수 행의 해당 컬럼 간의 최댓값
- MIN(입력값)
- 복수 행의 해당 컬럼 간의 최솟값
- STDDEV(입력값)
- 복수 행의 해당 컬럼 간의 표준편차
- VARIAN(입력값)
- 복수 행의 해당 컬럼 간의 분산
그룹 함수의 개념
- 소계 및 총계등을 구하기 위해서 집계 함수만 사용한다면 레벨별 집계를 위한 각 단계별 데이터 질의어를 UNION ALL 등으로 결합하고 표시하는 단계 필요
- 단일 DQL만으로도 원하는 작업 가능
- 정렬이 필요한 경우 ORDER BY절에 정렬 컬럼 명시
그룹 함수의 종류
- ROLLUP
- 소계 등 중간 집계 값을 산출 위한 칼럼을 ROLLUP 뒤 기재
- 지정 칼럼의 수 보다 하나 더 큰 레벨의 중간 집계 값이 생성
- SELECT 뒤에 포함되는 칼럼이 GROUP BY 또는 ROLLUP 뒤에 기재되어야 한다는 점 숙지
- CUBE
- 결합 가능한 모든 값에 대해 다차원 집계를 생성하며, 가능한 한 소집계만을 생성하는 ROLLUP과 구별
- 내부적으로 대상 컬럼의 순서를 변경하여 또 한 번의 쿼리를 수행
- 지정 컬럼의 순서가 바뀌어도 결과는 같음
- GROUPING SETS
- 원하는 특정 항목에 대한 다양한 소계 집합 계산 가능
- 집계 대상 칼럼 들에 대한 개별 집계를 구할 수 있고 칼럼 간 순서가 바뀌어도 정렬 순서는 바뀔 수 있으나 결과는 같음
윈도우 함수의 개념
- 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 기능
- 온라인 분석 처리는 시장 분석, 통계 작성, 경영 계획 분석 및 수립 등 비즈니스 현장에서 자주 사용되는 분석이 포함
- 데이터 기반 의사 결정의 증가에 따라 그 중요성이 더욱 증가하는 실정
윈도우 함수의 구분
- PARTITION BY는 선택 항목이며 순위를 정할 대상 범위의 컬럼을 설정
- OVER문구가 필수적으로 포함되며, ORDER BY 뒤에는 SORT컬럼을 입력
윈도우 함수의 종류
- 집계함수
- SUM
- MAX
- MIN
- AVG
- COUNT
- 순위함수
- RANK : 레코드의 순위를 계산하며, 동일 순위 레코드 존재 시 후 순위는 넘어감
- DENSE_RANK : “”, 동일 순위의 레코드 존재 시에도 후순위를 넘어가지 않음
- ROW_NUMBER : “”, 동일 순위의 값이 존재해도 이와 무관하게 연속 번호 부여
- 그룹 내 비율 함수
- RATIO_TO_REPORT
- PERCENT_RANK
- CUME_DIST
- NTILE
- 행 순서 함수
- FIRST_VALUE
- LAST_VALUE
- LAG
- LEAD