BookmarkSubscribeRSS Feed

SQL - 분석함수

Started ‎02-24-2025 by
Modified ‎02-24-2025 by
Views 553

 

 

분석함수는 데이터 그룹을 기반으로 앞뒤 행을 계산하거나 그룹에 대한 누적 분포, 상대 순위 등을 계산합니다.

그룹마다 여러 행을 반환합니다.

■ LAG, LEAD

앞뒤 행을 비교하여 데이터 처리를 해야 하는 경우 LAG 또는 LEAD 함수를 사용합니다.

LAG 함수는 현재 행에서 바로 앞의 행을 조회해서 데이터를 처리합니다.

LEAD 함수는 현재 행에서 바로 뒤의 행을 조회해서 데이터를 처리합니다.

값에 따라 이전 또는 이후 몇 번째 행을 참조할지 결정할 수도 있습니다.

 

 

 

image.png

 

 

 

# LAG 예시

 
SELECT 
    FIELD1, 
    ENGLISH, 
    LAG(ENGLISH) OVER (ORDER BY FIELD1) AS PREV_ENGLISH
FROM data;
 
image.png

 

 

현재 행의 ENGLISH 점수보다 한 줄 위의 ENGLISH 점수를 가져옵니다.

 

# LEAD 예시

 

 

SELECT 
    FIELD1, 
    SCIENCE, 
    LEAD(SCIENCE) OVER (ORDER BY FIELD1) AS NEXT_SCIENCE
FROM data;

 

 

 

image.png

 

 

현재 행의 SCIENCE 보다 한 줄 아래의 SCIENCE 점수를 가져옵니다.

■ CUME_DIST

그룹 내에서 누적 분포를 계산합니다.

그룹에서 데이터 값이 포함되는 위치의누적 분포를 계산합니다.

함수는 0초과 1이하의 범위 값을 반환합니다.

같은 값은 항상 같은 누적 분폿값을 계산합니다. NULL 값을 포함하고 있으며 NULL 값은 데이터 집합에서 가장 낮은 값으로 매겨집니다.

 

 

 

image.png

 

 

 

SELECT 
    FIELD1, 
    ENGLISH, 
    CUME_DIST() OVER (ORDER BY ENGLISH) AS ENGLISH_CUME_DIST
FROM data;

 

ENGLISH 점수를 오름차순으로 정렬한 수 누적 백분율을 계산합니다.

값이 작은 데이터부터 시작해서 누적된 비율이 증가합니다.

 

 

 

 

■ PERCENT_RANK

그룹 내의 상대 순위를 계산합니다.

CUME_DIST 와 비슷하지만 분포 순위를 계산합니다. 반환값 범위는 0초과 1이하의 값을 가집니다.

데이터 집합에서 첫 번째 행은 0부터 시작해 마지막 값은 1입니다.

NULL 값이 있다면 그룹 내에서 가장 낮은 값으로 매겨집니다. 상위 분포 순위를 계산할 때는 하나의 데이터를 간주합니다

 

 

 

 image.png

 

 

 

 

SELECT 
    FIELD1, 
    ENGLISH, 
    PERCENT_RANK() OVER (ORDER BY ENGLISH) AS ENGLISH_PERCENT_RANK
FROM data;

 

 

ENGLISH 점수를 오름차순으로 정렬하고 백분위 순위를 계산합니다. 가장 낮은 학생은 0의 값을 가지고, 가장 높은 점수를 가진 학생은 1의 값을 가집니다.

■ FIRST_VALUE, LAST_VALUE

그룹 내에서 첫 행 또는 마지막 행의 값을 구하여 데이터를 비교할 때 사용합니다.

FIRST_VALUE는 그룹에서 정렬된 데이터에서 첫 번째 행의 값을 반환합니다.

LAST_VALUE는 그룹에서 정렬된 데이터에서 마지막 행의 값을 반환합니다.

 

 

image.png

 

 

SELECT 
    FIELD1, 
    ENGLISH, 
    FIRST_VALUE(FIELD1) OVER (ORDER BY ENGLISH) AS FIRST_ENGLISH_STUDENT
FROM data;

점수를 오름차순으로 정렬한 수, 가장 낮은 점수를 가진 학생의 이름을 모든 행에 반환합니다. 점수가 가장 낮은 학생이 누군지 모든 행에서 확인할 수 있습니다.

Version history
Last update:
‎02-24-2025 07:09 AM
Updated by:
Contributors

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Tags