如何在 SQL Server 中编写 STDEV 来计算标准差,并附带示例?STDEV 函数是一个聚合函数,用于计算 SELECT 语句所选的全部记录(或行)的标准差。
STDEV 函数仅对数字列有效,并会忽略 NULL 值。STDEV 的语法如下所示。
SELECT STDEV ([Column_Name]) FROM [Source]
SQL STDEV 函数公式
用于计算标准差的 STDEV 函数的数学公式如下所示。
--Calculating the Mean or Average Mean = Sum of each individual/Total number of items --Calculating the Statistical Variance Variance = ((OriginalValue – Mean)² + (OriginalValue – Mean)² +.... )/(Total number of items - 1) --Calculating Standard Deviation Standard Deviation = Square root (Variance)
对于此 STDDEV 标准差,我们使用以下数据

SQL STDEV 函数用于查找标准差
STDEV 函数返回指定列中全部记录的标准差。例如,以下查询将计算 Customers 表中 [Yearly Income] 列的全部记录的标准差。
-- STDEV Function example
SELECT STDEV ([YearlyIncome]) AS [Standard Deviation]
FROM [Customer]

带 GROUP BY 子句的 STDEV 函数
通常,我们会计算属于某个类别或颜色的产品的标准差。在这种情况下,我们使用 GROUP BY 子句 按颜色或类别对产品进行分组。然后,使用 STDEV 函数计算每个组中产品的标准差。
SELECT [Occupation]
,STDEV ([YearlyIncome]) AS [Standard Deviation]
FROM [Customer]
GROUP BY [Occupation]
上面的 SQL Select 语句 查询将查找与特定部门关联的 Customers,并计算它们的标准差。

我们使用 Skilled Manual professions 并向您展示 SQL Server 的输出。
--Calculating Mean Mean = (60000 + 80000) / 2 Mean = 70000 --Calculating Variance Variance = ( (60000 - 70000) + (80000 - 70000) ) / (2 -1) Variance = 200000000 --Calculating Standard Deviation Standard Deviation = SQRT (Variance) Standard Deviation = SQRT (200000000) which means, Standard Deviation = 14142.13
HAVING 子句中的 SQL STDEV 函数
当执行数据分组时,在某些情况下,我们会针对聚合数据检查条件。在这种情况下,请将 SQL HAVING 子句 与 Group By 语句一起使用。
例如,SQL Server 标准差查询按职业对 Customers 进行分组。然后,它计算每个组的标准差。
SELECT [Occupation]
,STDEV ([YearlyIncome]) AS [Standard Deviation]
FROM [Customer]
GROUP BY [Occupation]
HAVING STDEV ([YearlyIncome]) > 0
下面的代码检查每个单独组的年收入标准差是否大于 0。如果为 True,则将显示相应的记录。
HAVING STDEV ([YearlyIncome]) > 0

子查询中的 SQL STDEV 函数
如何在 SQL Server 中使用 子查询 在 Where 子句 中计算标准差。例如,以下 STDEV 查询将返回 customers 表中 [Yearly Income] 大于年收入标准差五倍的所有 Customers。
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE [YearlyIncome] >
(SELECT STDEV([YearlyIncome] * 5) FROM [Customer])
从第一个 聚合函数 示例中,您可以发现年收入的标准差为 12516。因此,上面的查询将显示 Customers 表中年收入大于约 62580 的所有 Customers。
