집계성 SQL 작성
데이터 분석 함수의 개념
데이터 분석 함수의 개념
총합, 평균 등의 데이터 분석을 하기 위해 복수 행 기준의 데이터를 모아서 처리하는 것을 목적으로 하는 다중 행 함수
다중 행 연산자
다중 행 연산자 개념
서브쿼리의 결과가 여러 개의 튜플을 반환하는 다중 행 서브쿼리에서 사용되는 연산자
다중 행 연산자 종류
IN : 리턴되는 값 중에서 조건에 해당하는 값이 있으면 참
ANY(=SOME) : 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참
ALL : 값을 서브쿼리에 의해 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야만 참
EXISTS : 메인 쿼리의 비교 조건이 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참
데이터 분석 함수의 종류
집계 함수 : 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수
그룹 함수 : 소그룹 간의 소계 및 중계 등의 중간 합계 분석 데이터를 산출하는 함수
윈도 함수 : 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 기능
집계 함수
집계 함수(Aggregate Function)의 개념
여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수
집계 함수 구문
SELECT 컬럼1, 컬럼2, ..., 집계함수
FROM 테이블명
[WHERE 조건]
GROUP BY 컬럼1, 컬럼2, ...
[HAVING 조건식(집계함수 포함)]
GROUP BY 구문
- NULL 값을 가지는 ROW는 제외한 후 산출
- SELECT에서 사용하는 것과 같은 ALIAS 사용 불가
- WHERE 구문 안에 미포함
- WHERE 구문은 GROUP BY보다 먼저 실행되고, 대상이 되는 단일 행을 사전에 선별하는 역할
HAVING 구문
- WHERE 구문 내에는 사용할 수 없는 집계 함수의 구문을 적용하여 복수 행의 계산 결과를 조건별로 적용하는 데 사용
- 일반적으로 GROUP BY 뒤에 기재하며, GROUP BY 구분의 기분 항목이나 소그룹 집계 함수를 활용한 조건을 적용하는 데 사용
- GROUP BY 및 집계 함수에 대한 where 구문
집계 함수의 종류
COUNT : 복수 행의 줄 수를 반환
SUM : 복수 행의 해당 컬럼 간의 합계 계산
AVG : 복수 행의 해당 컬럼 간의 평균 계산
MAX : 복수 행의 해당 컬럼 중 최댓값 계산
MIN : 복수 행의 해당 컬럼 중 최솟값 계산
STDDEV : 복수 행의 해당 컬럼 간의 표준편차 계산
VARIANCE : 복수 행의 해당 컬럼 간의 분산 계산
그룹 함수
그룹 함수(Group Function)의 개념
테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수
그룹 함수의 유형
ROLLUP 함수
- 중간 집계 값을 산출하기 위한 그룹 함수
- 지정 컬럼의 수보다 하나 더 큰 레벨만큼의 중간 집계 값 생성
- 지정 컬럼은 계층별로 구성되기 때문에 순서가 바뀌면 수행 결과가 바뀜
SELECT 컬럼1, 컬럼2, ..., 집계 함수
FROM 테이블명
[WHERE ...]
GROUP BY [컬럼 ...] ROLLUP (컬럼1, 컬럼2, ...)
[HAVING ...]
[ORDER BY ...]
CUBE 함수
- 결합할 수 있는 모든 값에 대해 다차원 집계를 생성하는 그룹 함수
- 연산이 많아 시스템에 부담
SELECT 컬럼1, 컬럼2, ..., 집계 함수
FROM 테이블명
[WHERE ...]
GROUP BY [컬럼 ...] CUBE (컬럼1, 컬럼2, ...)
[HAVING ...]
[ORDER BY ...]
GROUPING SETS 함수
- 집계 대상 컬럼들에 대한 개별 집계를 구할 수 있으며, ROLLUP이나 CUBE와 달리 컬럼 간 순서와 무관한 결과를 얻을 수 있는 그룹 함수
- ORDER BY를 이용하여 집계 대상 그룹과의 표시 순서를 조정하여 체계적으로 보여줄 수 있음
SELECT 컬럼1, 컬럼2, ..., 집계 함수
FROM 테이블명
[WHERE ...]
GROUP BY [컬럼 ...] GROUPING SETS (컬럼1, 컬럼2, ...)
[HAVING ...]
[ORDER BY ...]
윈도 함수
윈도 함수의 개념
데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 함수로 온라인 분석 처리(OLAP, OnLine Analytical Processing) 함수라고도 함
윈도 함수의 구문
SELECT 함수명(파라미터)
OVER
([PARTITION BY 컬럼1, ...]
[ORDER BY 컬럼A, ...])
FROM 테이블명
순위 함수
RANK : 동일 순위의 레코드 존재 시 후순위는 넘어감. 예를 들어, 2위가 3개인 레코드인 경우 : 2, 2, 2, 5, 6
DENSE_RANK : 동일 순위의 레코드 존재 시에도 후순위를 넘어가지 않음. 예를 들어, 2위가 3개인 레코드인 경우 : 2, 2, 2, 3, 4
ROW_NUMBER : 동일 순위의 값이 존재해도 이와 무관하게 연속 번호를 부여함. 예를 들어, 2위가 3개인 레코드인 경우 : 2, 3, 4, 5, 6
'정보처리 > 데이터베이스구축' 카테고리의 다른 글
SQL 응용 SQL 활용 및 최적화 (0) | 2025.03.16 |
---|---|
SQL 응용 데이터베이스 기본 3/3 (0) | 2025.03.14 |
SQL 응용 데이터베이스 기본 2/3 (0) | 2025.03.13 |
SQL 응용 데이터베이스 기본 1/3 (0) | 2025.03.12 |