APPROX_PERCENTILE_COMBINE

APPROX_PERCENTILE_COMBINE (근사 백분위수 상태 결합)

백분위수 입력 상태들을 단일 출력 상태로 결합(병합)해요.

이를 통해 같은 테이블의 수평 파티션 각각에 대해 APPROX_PERCENTILE_ACCUMULATE를 실행해 각 테이블 파티션에 대한 알고리즘 상태를 만들 수 있어요. 이 상태들은 나중에 APPROX_PERCENTILE_COMBINE으로 결합해, 전체 테이블에 대해 APPROX_PERCENTILE_ACCUMULATE를 한 번 실행한 것과 동일한 출력 상태를 만들 수 있어요.

출처: Snowflake SQL Reference - APPROX_PERCENTILE_COMBINE

본문

구문

APPROX_PERCENTILE_COMBINE( <state> )

인자

state

APPROX_PERCENTILE_ACCUMULATE 호출이 생성한 상태 정보를 담은 표현식이에요.

사용 참고 사항

  • 10진 부동 소수점(DECFLOAT) 값은 지원되지 않아요.

예시

testtable.c2 컬럼 숫자들의 중앙값에 대한 근사값을 반환해요(0.5는 50번째 백분위수를 의미해요):

CREATE OR REPLACE TABLE mytesttable AS SELECT APPROX_PERCENTILE_COMBINE(td) s FROM (
  (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) td FROM testtable WHERE c2 <= 0)
  UNION ALL
  (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) td FROM testtable WHERE c2 > 0 AND c2 <= 0.5)
  UNION ALL
  (SELECT APPROX_PERCENTILE_ACCUMULATE(C2) td FROM testtable WHERE c2 > 0.5)
);
SELECT APPROX_PERCENTILE_ESTIMATE(s , 0.5) FROM mytesttable;

mytest.s1과 mytest2.s2의 숫자들에 대한 2번째 백분위수의 근사값을 반환해요:

CREATE OR REPLACE TABLE mytest AS (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) s1 FROM testtable WHERE c2 < 0);
CREATE OR REPLACE TABLE mytest2 AS (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) s1 FROM testtable WHERE c2 >= 0);
CREATE OR REPLACE TABLE combinedtable AS SELECT APPROX_PERCENTILE_COMBINE(s) combinedstate FROM (
  (SELECT s1 s FROM mytest) UNION ALL (SELECT s1 s FROM mytest2)
);
SELECT APPROX_PERCENTILE_ESTIMATE(combinedstate , 0.02) FROM combinedtable;

더 광범위한 예시는 APPROX_PERCENTILE_ACCUMULATE의 예시 섹션을 참고해요.

더 알아보기