VARP (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库

返回指定表达式中所有值的总体统计方差。

Transact-SQL 语法约定

语法

-- 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 子句一同指定时,它具有不确定性。 有关详细信息,请参阅 Deterministic and Nondeterministic Functions

示例

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

另请参阅

聚合函数 (Transact-SQL)
OVER 子句 (Transact-SQL)