본문 바로가기
정보처리/데이터베이스구축

SQL 응용 응용 SQL 작성

by 피갓자 2025. 3. 15.

SQL 응용 응용 SQL 작성
SQL 응용 응용 SQL 작성

집계성 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