Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

갑을병정이야기

Oracle의 PERCENTILE_CONT와 APPROX_PERCENTILE 활용

Billcorea 2025. 6. 15. 15:17
반응형

 

Oracle의 PERCENTILE_CONT와 APPROX_PERCENTILE 활용

백분위

 

Oracle에서 백분위수를 계산할 때 사용할 수 있는 주요 함수와 활용 방법에 대해 정리해 보겠습니다.

PERCENTILE_CONT 함수

`PERCENTILE_CONT` 함수는 연속적인 값을 기반으로 특정 백분위수를 계산하는 함수입니다. 예제는 다음과 같습니다:

SELECT PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY column_name) FROM table_name;
    

하지만 `PERCENTILE_CONT`는 **상수 값**만을 매개변수로 받을 수 있어 동적으로 값을 변경하기 어렵습니다.

동적으로 백분위 값 설정하기

`PERCENTILE_CONT`의 매개변수를 동적으로 설정하는 방법은 제한적이지만 다음과 같은 방법을 고려할 수 있습니다:

  1. PL/SQL을 활용한 동적 SQL 실행
  2. WITH 절을 이용한 사전 백분위값 계산
  3. APPROX_PERCENTILE을 활용하여 근사값 반환

예를 들어, `WITH` 절을 활용하여 여러 백분위수를 계산할 수 있습니다:

WITH PercentileData AS (
    SELECT column_name,
           PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY column_name) AS percentile_25,
           PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY column_name) AS percentile_50,
           PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY column_name) AS percentile_75
    FROM table_name
)
SELECT * FROM PercentileData;
    

APPROX_PERCENTILE 활용

Oracle 12c 이상에서는 `APPROX_PERCENTILE`을 활용하여 대량 데이터에서 빠르게 근사 백분위수를 계산할 수 있습니다.

SELECT APPROX_PERCENTILE(column_name, 0.75) FROM table_name;
    

이 함수는 빠른 성능을 제공하지만 `PERCENTILE_CONT`보다 정확성이 조금 낮을 수 있습니다.

결론

`PERCENTILE_CONT`를 동적으로 활용하는 것은 어렵지만, `WITH` 절을 이용한 미리 계산된 값 활용, `EXECUTE IMMEDIATE`를 통한 PL/SQL 실행, `APPROX_PERCENTILE`을 통한 근사값 추출 등의 방법을 사용할 수 있습니다.

반응형