VAR_SAMP¶
그룹에 있는 NULL 이외의 레코드의 표본 분산을 반환합니다. 그룹 내의 모든 레코드가 NULL인 경우, NULL이 반환됩니다.
구문¶
집계 함수
VAR_SAMP( [DISTINCT] <expr1> )
윈도우 함수
VAR_SAMP( <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
window_frame
구문에 대한 자세한 내용은 윈도우 프레임 구문과 사용법 을 참조하십시오.
인자¶
expr1
expr1
은 숫자 데이터 타입 중 하나로 평가되어야 합니다.expr2
분할하는 식입니다.
expr3
각 파티션 내에서 순서를 지정하는 식입니다.
반환¶
반환된 값의 데이터 타입은 NUMBER(<정밀도>, <스케일>)
입니다. 스케일은 처리되는 값에 따라 다릅니다.
사용법 노트¶
단일 레코드 입력의 경우, VAR_SAMP, VARIANCE, VARIANCE_SAMP 모두 NULL을 반환합니다. 이는 VAR_SAMP가 단일 레코드에 대해 NULL을 반환하고 VARIANCE가 0을 반환하는 Oracle 동작과는 다릅니다.
VARCHAR 식이 전달되면 이 함수는 암시적으로 입력을 부동 소수점 값으로 캐스팅합니다. 캐스팅을 수행할 수 없으면 오류가 반환됩니다.
윈도우 함수로 호출되는 경우:
DISTINCT 키워드는 구문상 허용되지만, 무시됩니다.
OVER 절 내에서 ORDER BY 하위 절을 사용하는 경우, 윈도우 프레임을 사용해야 합니다. 윈도우 프레임이 지정되지 않은 경우, ORDER BY는 누적 윈도우 프레임을 의미합니다.
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
구문 및 예를 비롯하여 윈도우 프레임에 대한 자세한 내용은 윈도우 프레임 구문과 사용법 을 참조하십시오.
암시적 윈도우 프레임에 대한 자세한 내용은 윈도우 프레임 사용법 노트 를 참조하십시오.
예¶
이 예는 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);VAR_SAMP()을 호출하여 테이블을 쿼리합니다.
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 | +---+---------------+----------------+