2026/04/27

오늘의 이야기

 



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`을 통한 근사값 추출 등의 방법을 사용할 수 있습니다.





댓글 없음:

댓글 쓰기

오늘의 이야기

  🎾 Kotlin으로 복식 경기 Round-Robin 매칭 구성하기 라운드 로빈 구현해 보기   이 글은 Kotlin과 Jetpack Compose를 사용하는 Android 앱에서 복식 경기 매...