본문 바로가기

SQL

분석 함수: 분석 함수(Analytics Functions) 사용법.

반응형

분석 함수(Analytics Functions)는 SQL에서 복잡한 데이터 분석과 계산을 수행하는 데 사용되는 고급 기능입니다. 이러한 함수들은 데이터를 그룹화하지 않고도 각 행에 대해 계산을 수행할 수 있게 해주어, 데이터의 순위, 분포, 이동 평균 등을 계산할 수 있습니다. 데이터베이스 시스템마다 다양한 분석 함수를 제공하며, 여기에는 Oracle, PostgreSQL, SQL Server, MySQL 등이 있습니다. 다음은 분석 함수 사용법과 관련된 예제와 전문용어 설명입니다.

관련 예제


예제 1: ROW_NUMBER()
각 행에 대해 순서 번호를 부여합니다.

SELECT name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS rownum
FROM employees;
이 쿼리는 직원들을 급여 순으로 내림차순 정렬하고, 각 직원에게 순서 번호를 부여합니다.


예제 2: RANK()와 DENSE_RANK()
각 행에 순위를 부여합니다. RANK()는 동일한 값에 대해 동일한 순위를, DENSE_RANK()는 중복을 허용하지 않고 순위를 부여합니다.

SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;
이 쿼리는 직원들을 급여 순으로 순위를 매깁니다.


예제 3: LEAD()와 LAG()
특정 행의 다음 행이나 이전 행의 값을 가져옵니다.

SELECT name, salary, LEAD(salary) OVER (ORDER BY salary) AS next_highest_salary
FROM employees;
이 쿼리는 각 직원의 다음 높은 급여를 표시합니다.


예제 4: CUME_DIST()
각 행의 누적 분포 값을 계산합니다.

SELECT name, salary, CUME_DIST() OVER (ORDER BY salary) AS cume_dist
FROM employees;
이 쿼리는 각 직원의 급여가 전체에서 차지하는 누적 분포 비율을 보여줍니다.


예제 5: NTILE()
행들을 주어진 수의 버킷으로 분할합니다.

SELECT name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile
FROM employees;
이 쿼리는 직원들을 급여에 따라 4개의 분위(쿼타일)로 나눕니다.


관련 전문용어 설명
분석 함수(Analytics Functions): 데이터를 그룹화하지 않고 전체 행 집합에 대해 계산을 수행할 수 있는 SQL 함수입니다.
ROW_NUMBER(): 결과 집합에 순번을 부여하는 함수입니다.
RANK() / DENSE_RANK(): 모든 행에 순위를 부여하는 함수로, RANK()는 동일 순위를 고려하고, DENSE_RANK()는 중복 없이 순위를 부여합니다.
LEAD() / LAG(): 지정된 행보다 앞이나 뒤에 있는 행의 값을 반환하는 함수입니다.
CUME_DIST(): 전체 행 집합에서 현재 행의 누적 분포 값을 계산하는 함수입니다.
NTILE(): 데이터를 주어진 수의 그룹으로 나누어 각 행에 그룹 번호를 할당하는 함수입니다.

반응형