SQL Server 函数

SQL Server (Transact-SQL) VAR() 函数返回指定表达式中所有值的统计方差。

语法

使用 VAR() 函数的语法如下:

SELECT VAR(column_name) 
FROM table_name
WHERE condition(s); 

SQL Server (Transact-SQL) GROUP BY 子句用于在一个或多个结果表中将结果表排列到相同的组中使用列。请注意,必须在 GROUP BY 子句中包含那些未封装在 VAR() 函数中的列名。请参阅以下语法:

SELECT column1, column2, ...
       VAR(column_name) 
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...; 

参数

column1, column2, ...指定未封装在 VAR() 函数中的列名。必须包含在 GROUP BY 子句中。
column_name指定需要返回方差的列或表达式.
table_name指定需要检索记录的表名。
WHERE condition可选。 指定条件。根据指定条件选择记录。

返回值

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

示例 - 单列

考虑一个名为 Employee 的数据库表,其中包含以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

获取方差查询年龄大于25岁的所有员工的工资,可以使用以下查询:

SELECT VAR(Salary) AS VAR_Salary 
FROM Employee
WHERE Age > 25; 

结果如下:

VAR_Salary
22500

示例 - 使用 DISTINCT

DISTICT 子句可与 VAR() 函数一起使用。例如 - 要获取不同(唯一)工资的方差,可以使用以下代码:

SELECT VAR(DISTINCT Salary) AS VAR_UniqueSalary 
FROM Employee; 

这将产生如下所示的结果:

VAR_UniqueSalary
27291.666666666668

示例 - 使用公式

VAR() 函数中包含的表达式不必是单个字段。此函数还可以使用公式。例如 - 考虑向每个员工发放奖金(工资的 15%),要计算奖金金额的方差,可以使用以下查询:

SELECT VAR(Salary * 0.15) AS VAR_BonusAmount
FROM Employee; 

这将产生结果如下所示:

VAR_BonusAmount
459.375

示例 - 使用 GROUP BY

要获取按年龄分组的员工的工资差异,可以使用以下查询使用:

SELECT Age, VAR(Salary) AS VAR_SalaryByAge 
FROM Employee
GROUP BY Age; 

上述代码的结果将是:

AgeVAR_SalaryByAge
24NULL
25NULL
27NULL
2820000
30NULL