SQL VARP() 函数
SQL VARP() 函数计算特定列中字段(数值)的总体标准方差。如果指定的行不存在,则该函数返回NULL。
总体标准方差是一组数据与其平均值之间的变化或离散程度的度量。在数学上,平均值是给定一组数字的平均值,方差被定义为与平均值的差值平方的平均值。符号上表示为 σ 2 。
语法
以下是 SQL VARP() 函数的语法 −
VARP(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);
如果您使用select语句检索表格,您将得到以下输出 −
+----+----------+-----+-----------+----------+
| 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 VARP(SALARY) as st_varp
from CUSTOMERS
输出
+------------------+
| st_varp |
+------------------+
| 10000000 |
+------------------+
示例
以下查询返回所有工资大于工资总体标准差平方根的客户-
SELECT NAME, SALARY, AGE,ADDRESS
FROM CUSTOMERS
WHERE SALARY > (SELECT SQRT(VARP(SALARY)) FROM CUSTOMERS)
因此,从上面的示例中我们知道薪水人口标准差的平方根大约等于3162.27。因此,在执行上述代码时,我们得到以下输出:
输出
+----------+----------+-----+---------+
| NAME | SALARY | AGE | ADDRESS |
+----------+----------+-----+---------+
| Chaitali | 6500.00 | 25 | Mumbai |
| Hardik | 8500.00 | 27 | Bhopal |
| Komal | 4500.00 | 22 | MP |
| Muffy | 10000.00 | 24 | Indore |
+----------+----------+-----+---------+
示例
现在,假设我们想根据上面的表格计算客户不同(唯一)年龄的人口标准方差,那么我们可以使用以下查询来实现 –
SELECT VARP(DISTINCT AGE) as st_varp
from CUSTOMERS
输出
+------------------+
| st_varp |
+------------------+
| 10.9166666666667 |
+------------------+
示例
在这里,我们试图获取年龄大于24岁的所有客户薪水的总体标准方差 –
SELECT VARP(Salary) AS st_varp
FROM CUSTOMERS
WHERE AGE > 24;
输出
+------------------+
| st_varp |
+------------------+
| 8796875 |
+------------------+