VARP (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
傳回指定運算式中之所有值的母體擴展的統計變異數。
語法
-- Aggregate Function Syntax
VARP ( [ ALL | DISTINCT ] expression )
-- Analytic Function Syntax
VARP ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
引數
ALL
將函數套用至所有值。 ALL 是預設值。
DISTINCT
指定要考量每個唯一值。
expression
這是精確數值或近似數值資料類型類別的運算式,但 bit 資料類型除外。 不允許彙總函式和子查詢。
OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause 會將 FROM 子句產生的結果集分割成函數所要套用的分割區。 如未指定,此函數會將查詢結果集的所有資料列視為單一群組。 order_by_clause 可決定執行作業的邏輯順序。 order_by_clause 為必要項目。 如需詳細資訊,請參閱 OVER 子句 (Transact-SQL)。
傳回型別
float
備註
如果在 SELECT 陳述式的所有項目上使用 VARP,結果集中的每個值都會包含在計算中。 VARP 只能搭配數值資料行來使用。 會忽略 Null 值。
VARP 未搭配 OVER 和 ORDER BY 子句使用時,是具決定性函數。 使用 OVER 和 ORDER BY 子句指定時,則不具決定性。 如需詳細資訊,請參閱 決定性與非決定性函數。
範例
A:使用 VARP
下列範例會傳回 AdventureWorks2022 資料庫中數據表中 SalesPerson
所有獎金值的母體變異數。
SELECT VARP(Bonus)
FROM Sales.SalesPerson;
GO
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
B:使用 VARP
下列範例會傳回 dbo.FactSalesQuota
資料表中所有銷售配額值的 VARP
。 第一個資料行包含所有相異值的變異數,而第二個資料行則包含所有值的變異數 (包含任何重複的值)。
-- Uses AdventureWorks
SELECT VARP(DISTINCT SalesAmountQuota)AS Distinct_Values, VARP(SalesAmountQuota) AS All_Values
FROM dbo.FactSalesQuota;
結果集如下所示。
Distinct_Values All_Values
---------------- ----------------
158146830494.18 157788848582.94
C. 搭配使用 OVER 和 VARP
下列範例會傳回日曆年度內每一季銷售配額值的 VARP
。 請注意,OVER 子句中的 ORDER BY 會排序統計變異數,而 SELECT 陳述式的 ORDER BY 會排序結果集。
-- Uses AdventureWorks
SELECT CalendarYear AS Year, CalendarQuarter AS Quarter, SalesAmountQuota AS SalesQuota,
VARP(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 0.00
2002 2 140000.0000 600250000.00
2002 3 70000.0000 860222222.22
2002 4 154000.0000 1185187500.00