VAR(Transact-SQL)

적용 대상: 예SQL Server(지원되는 모든 버전) 예Azure SQL Database 예Azure SQL Managed Instance 예Azure Synapse Analytics 예병렬 데이터 웨어하우스

지정한 식에 있는 모든 값의 통계적 분산을 반환합니다. OVER 절이 뒤에 올 수도 있습니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

-- Aggregate Function Syntax   
VAR ( [ ALL | DISTINCT ] expression )  
  
-- Analytic Function Syntax  
VAR ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)  

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

ALL
모든 값에 함수를 적용합니다. 기본값은 ALL입니다.

DISTINCT
각 고유 값을 고려하도록 지정합니다.

expression
bit 데이터 형식을 제외한 정확한 수치 또는 근사치 데이터 형식 범주의 expression입니다. 집계 함수와 하위 쿼리는 허용되지 않습니다.

OVER ( [ partition_by_clause ] order_by_clause )
partition_by_clause 는 FROM 절이 생성한 결과 집합을 함수가 적용되는 파티션으로 나눕니다. 지정하지 않을 경우 쿼리 결과 집합의 모든 행이 단일 그룹으로 취급됩니다. order_by_clause 는 작업이 수행되는 논리적 순서를 결정합니다. order_by_clause 는 필수입니다. 자세한 내용은 OVER 절(Transact-SQL)을 참조하세요.

반환 형식

float

설명

VAR가 SELECT 문의 모든 항목에 대해 사용되는 경우, 결과 집합의 각 값은 계산에 포함됩니다. VAR와 함께 사용할 수 있는 것은 숫자 열뿐입니다. Null 값은 무시됩니다.

VAR은 OVER 및 ORDER BY 절 없이 사용되는 경우 결정적 함수이고, OVER 및 ORDER BY 절과 함께 지정되는 경우 비결정적 함수입니다. 자세한 내용은 Deterministic and Nondeterministic Functions을 참조하세요.

예제

1. VAR 사용하기

다음은 AdventureWorks2012 데이터베이스에서 SalesPerson 테이블에 있는 모든 보너스 값의 모집단에 대한 분산을 반환하는 예입니다.

SELECT VAR(Bonus)  
FROM Sales.SalesPerson;  
GO  

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

2. VAR 사용하기

다음 예에서는 테이블 dbo.FactSalesQuota의 판매 할당량 값의 통계적 분산을 반환합니다. 첫 번째 열은 모든 고유 값의 분산을 포함하고 두 번째 열은 중복 값을 포함한 모든 값의 분산을 포함합니다.

-- Uses AdventureWorks  
  
SELECT VAR(DISTINCT SalesAmountQuota)AS Distinct_Values, VAR(SalesAmountQuota) AS All_Values  
FROM dbo.FactSalesQuota;  

결과 집합은 다음과 같습니다.

Distinct_Values   All_Values
----------------  ----------------
159180469909.18   158762853821.10

C. OVER와 함께 VAR 사용하기

다음 예에서는 한 해의 각 분기에 대한 판매 할당량 값의 통계적 분산을 반환합니다. OVER 절에서 ORDER BY는 통계적 분산과 SELECT 문의 ORDER BY를 결과 집합으로 정렬합니다.

-- Uses AdventureWorks  
  
SELECT CalendarYear AS Year, CalendarQuarter AS Quarter, SalesAmountQuota AS SalesQuota,  
       VAR(SalesAmountQuota) OVER (ORDER BY CalendarYear, CalendarQuarter) AS Variance  
FROM dbo.FactSalesQuota  
WHERE EmployeeKey = 272 AND CalendarYear = 2002  
ORDER BY CalendarQuarter;  

결과 집합은 다음과 같습니다.

Year  Quarter  SalesQuota              Variance
----  -------  ----------------------  -------------------
2002  1         91000.0000             null
2002  2        140000.0000             1200500000.00
2002  3         70000.0000             1290333333.33
2002  4        154000.0000             1580250000.00

참고 항목

집계 함수(Transact-SQL)
OVER 절(Transact-SQL)