VAR_SAMP

VAR_SAMP

그룹에서 NULL이 아닌 레코드의 표본 분산(sample variance)을 반환해요. 그룹 안의 모든 레코드가 NULL이면 NULL을 반환해요.

별칭: VARIANCE, VARIANCE_SAMP

출처: Snowflake SQL Reference - VAR_SAMP

본문

구문

집계 함수:

VAR_SAMP( [DISTINCT] expr1 )

윈도우 함수:

VAR_SAMP( expr1 ) OVER (
                         [ PARTITION BY expr2 ]
                         [ ORDER BY expr3 [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] [ window_frame ] ]
                         )

자세한 window_frame 구문은 Window function syntax and usage를 참고하세요.

인자

expr1 expr1은 숫자 데이터 타입 중 하나로 평가되어야 해요.

expr2 파티션을 나눌 표현식이에요.

expr3 각 파티션 안에서 정렬할 표현식이에요.

반환 값

반환 값의 데이터 타입은 NUMBER(precision, scale)이에요. scale은 처리되는 값에 따라 달라져요.

사용 시 유의사항

  • 단일 레코드 입력의 경우 VAR_SAMP, VARIANCE, VARIANCE_SAMP 모두 NULL을 반환해요. 이것은 VAR_SAMP가 단일 레코드에 대해 NULL을 반환하고 VARIANCE가 0을 반환하는 Oracle 동작과 다르지 않아요.

  • VARCHAR 표현식이 전달되면 이 함수는 입력을 부동소수점 값으로 암시적으로 캐스팅해요. 캐스팅을 수행할 수 없으면 오류가 반환돼요.

  • 이 함수가 윈도우 함수로 호출될 때:

    • 구문은 DISTINCT 키워드를 허용하지만 무시돼요.

    • 윈도우 프레임을 지정하지 않으면 다음과 같은 암시된 윈도우 프레임이 사용돼요:

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

    윈도우 프레임에 대한 자세한 정보(구문, 사용 시 유의사항, 예시 포함)는 Window function syntax and usage를 참고하세요.

예시

이 예시는 VAR_SAMP 함수를 사용하는 방법을 보여줘요:

테이블을 만들고 채워요:

CREATE TABLE aggr (k INT, v DECIMAL(10,2), v2 DECIMAL(10, 2));

INSERT INTO aggr VALUES
  (1, 10, NULL),
  (2, 10, 11),
  (2, 20, 22),
  (2, 25, NULL),
  (2, 30, 35);

테이블을 쿼리해요:

SELECT k, VAR_SAMP(v), VAR_SAMP(v2)
  FROM aggr
  GROUP BY k
  ORDER BY k;
+---+---------------+----------------+
| K |   VAR_SAMP(V) |   VAR_SAMP(V2) |
|---+---------------+----------------|
| 1 |          NULL |           NULL |
| 2 | 72.9166666667 | 144.3333333333 |
+---+---------------+----------------+

더 알아보기 (Learn more)