SQL - STDEVP() 函数



SQL STDEVP() 函数计算特定列中字段(数值)的总体标准差。如果指定的行不存在,则此函数返回 NULL。

总体标准差衡量数据集中的值与平均值的偏离程度。从数学角度来看,它是总体方差的平方根。符号表示为σ。它很有用,因为它提供了一个衡量总体值围绕平均值分散或聚集程度的指标。较大的σ值表示值分布得更广,而较小的值表示它们更紧密地聚集在平均值周围。

语法

以下是SQL STDEVP()函数的语法:

STDEVP(column_name)

参数

  • column_name - 这是我们要计算总体标准差的列的名称。

示例

假设我们创建了一个名为 CUSTOMERS 的表,如下所示:

create table CUSTOMERS(ID INT NOT NULL, 
NAME VARCHAR(20) NOT NULL, 
AGE INT NOT NULL, 
ADDRESS CHAR(25), 
SALARY DECIMAL(18, 2), 
PRIMARY KEY(ID));

让我们向其中插入一些值:

insert INTO CUSTOMERS VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
insert INTO CUSTOMERS VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
insert INTO CUSTOMERS VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
insert INTO CUSTOMERS VALUES(6, 'Komal', 22, 'MP', 4500.00);
insert INTO CUSTOMERS VALUES(7, 'Muffy', 24, 'Indore', 10000.00);

创建的表如下:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | Kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

以下查询计算所有客户工资的总体标准差:

SELECT STDEVP(SALARY) as st_devp
from CUSTOMERS

输出

+------------------+
| st_devp          |
+------------------+
| 3162.27766016838 |
+------------------+

示例

以下查询返回所有工资大于工资总体标准差两倍的客户:

SELECT NAME, SALARY, AGE,ADDRESS
FROM CUSTOMERS
WHERE SALARY > (SELECT STDEVP(SALARY * 2) FROM CUSTOMERS)

从上面的例子我们知道,工资总体标准差的两倍约等于 6831.3004。因此,执行上述代码后,我们将得到以下输出:

+----------+----------+-----+---------+
| NAME     | SALARY   | AGE | ADDRESS |
+----------+----------+-----+---------+
| Chaitali | 6500.00  |  25 | Mumbai  |
| Hardik   | 8500.00  |  27 | Bhopal  |
| Muffy    | 10000.00 |  24 | Indore  |
+----------+----------+-----+---------+

示例

现在,假设根据上表,我们想计算客户不同(唯一)年龄的总体标准差,我们可以简单地使用以下查询:

SELECT STDEVP(DISTINCT AGE) as st_devp
from CUSTOMERS

输出

+------------------+
| st_devp          |
+------------------+
| 3.30403793359983 |
+------------------+

示例

在这里,我们尝试获取所有年龄大于 24 的客户的工资总体标准差:

SELECT STDEVP(Salary) AS st_devp
FROM CUSTOMERS
WHERE AGE > 24;

上述代码的输出如下:

+------------------+
| st_devp          |
+------------------+
| 2965.95262942617 |
+------------------+
sql-aggregate-functions.htm
广告
© . All rights reserved.