본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

87강 SQL 함수 정리 : PostgreSQL PERCENT_RANK Function

by DoitSQL 2023. 1. 29.
728x90

PostgreSQL 기초강의, PostgreSQL 기초강좌

87강 SQL 함수 정리 : PostgreSQL PERCENT_RANK Function   

 

SQL 함수 정리 87강 시작합니다.

 

이번 시간에는

 PostgreSQL PERCENT_RANK Function

에 대해서 알아보는 시간입니다.

 

이번 시간에는 PostgreSQL PERCENT_RANK 함수를 사용하여 값 집합 내에서 값의 상대적 순위를 계산하는 방법에 대해 알아봅니다.


PostgreSQL PERCENT_RANK() 함수 소개   

PERCENT_RANK () 함수는 CUME_DIST() 함수와 유사합니다. 공식이 다릅니다. PERCENT_RANK () 함수는 값 집합 내에서 값의 상대적인 순위를 평가합니다.

임의의 행의 백분율 순위를 계산합니다. 백분율 순위를 구하는 공식은 다음과 같습니다.

(x - 1) / (the number of rows in the window or partition - 1)

(x - 1) / (창 또는 파티션의 행 수 - 1)

여기서 x는 현재 행의 순위입니다. 따라서 첫 번째 행은 항상 0입니다.

 

 

다음은 PERCENT_RANK () 함수의 구문을 보여줍니다:

PERCENT_RANK() OVER (
    [PARTITION BY partition_expression,... ]
    ORDER BY sort_expression [ASC | DESC],...

 

이 구문에서:

PARTITION BY   

PARTITION BY 절은 행을 PERCENT_RANK() 함수가 적용되는 여러 파티션으로 나눕니다.

PARTITION BY 절은 선택 사항입니다. 생략하면 함수는 전체 결과 집합을 단일 파티션으로 처리합니다.

 

ORDER BY   

ORDER BY 절은 함수가 적용되는 각 파티션의 행 순서를 지정합니다.

 

Return value   

PERCENT_RANK() 함수는 0보다 크고 1보다 작거나 같은 결과를 반환합니다.

0 <= PERCENT_RANK() <= 1  

첫 번째 값은 항상 0의 순위를 받습니다. 평가된 값을 동일한 누적 분포 값에 연결합니다.


PostgreSQL PERCENT_RANK() 예제 

우리는 시연을 위해 CUME_DIST() 함수 튜토리얼에서 생성된 sales_stats 테이블을 사용할 것입니다.

SELECT 
     year,
     name,
     amount
FROM 
    sales_stats 
ORDER BY 
     year, name; 

sales_stats

 

1) 결과 집합 예제에 PostgreSQL PERCENT_RANK() 함수 사용   

다음 예제에서는 PERCENT_RANK () 함수를 사용하여 2019년 각 직원의 매출 백분위수를 계산합니다:

SELECT 
    name,
    amount,
    PERCENT_RANK() OVER (
        ORDER BY amount
    )
FROM 
    sales_stats
WHERE 
    year = 2019; 

결과


2) 파티션 예제에서 PostgreSQL PERCENT_RANK() 함수 사용   

이 예제는 2018년과 2019년 모두 영업 사원의 매출액 백분위수를 계산하기 위해 PERCENT_RANK() 함수를 사용합니다.

SELECT 
    name,
    amount,
    PERCENT_RANK() OVER (
        PARTITION BY year
        ORDER BY amount
    )
FROM 
    sales_stats; 

결과

이 예에서는 다음을 수행합니다:

  • PARTITION BY 절은 sales_stats 테이블의 행을 2018년과 2019년의 두 개의 파티션으로 분배했습니다.
  • ORDER BY 절은 판매 금액별로 각 파티션의 행을 정렬했습니다.
  • PERCENT_RANK() 함수는 순서가 지정된 각 파티션에 적용되어 백분율 순위를 계산합니다.

이번 강의에서는 PostgreSQL PERCENT_RANK() 함수를 사용하여 값 집합 내에서 값의 상대적 순위를 계산하는 방법에 대해 배웠습니다.

 

CUME_DIST() 함수와 다른 점은 계산 공식이 다르다는 것입니다.

 

수고하셨습니다.


본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글