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));
让我们将 r 值插入其中 –
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 |
+------------------+