MySQL - 标准差
MySQL 标准差函数是用于计算数据集中值之间差异或离散度的数学函数。
MySQL 中有两种标准差:总体标准差和样本标准差。
常用标准差
"总体标准差"是一组数据方差的平方根。它计算的是总体内部的变异或离散度。它用希腊字母 sigma 来表示。
要计算总体标准差,我们可以使用以下函数:
STD(表达式):计算并返回特定列中字段的总体标准差。如果指定的行不存在,此函数将返回 NULL。
STDDEV(表达式):与 STD() 函数相同,但也适用于 Oracle 数据库。
STDDEV_POP(表达式):等同于 STD() 函数。
以下是计算"总体标准差"的数学公式:
// 数学公式 $\sigma = \sqrt{\frac{\sum_{i=1}^n{(x-\bar x)^2}}{N-1}}$
其中,
= 总体标准差
N = 大小总体
Xi = 总体中的每个值
meu = 总体平均值
示例
首先,我们使用 CREATE 语句创建一个名为 CUSTOMERS 的表,如下所示 -
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR(15) NOT NULL, AGE INT NOT NULL, ADDRESS VARCHAR(25), SALARY DECIMAL(10, 2), PRIMARY KEY(ID) );
现在,让我们使用 INSERT 语句将值插入到 CUSTOMERS 表中 -
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', '32', 'Ahmedabad', 2000), (2, 'Khilan', '25', 'Delhi', 1500), (3, 'Kaushik', '23', 'Kota', 2000), (4, 'Chaitali', '26', 'Mumbai', 6500), (5, 'Hardik','27', 'Bhopal', 8500), (6, 'Komal', '22', 'Hyderabad', 9000), (7, 'Muffy', '24', 'Indore', 5500);
该表创建为 −
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 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
STD() 函数
以下查询计算表演赛中所有球员得分的总体标准差 -
SELECT STD(AGE) from CUSTOMERS;
输出
以下是输出 -
STD(AGE) |
---|
3.063944369932459 |
STDDEV() 函数
STDDEV() 函数与 STD() 函数相同,但它也适用于 Oracle 数据库。
在以下查询中,我们计算"Score_In_Exhibition_Match"列的总体标准差 -
SELECT STDDEV(AGE) FROM CUSTOMERS;
输出
输出结果如下:-
STDDEV(AGE) |
---|
3.063944369932459 |
STDDEV_POP() 函数
在 MySQL 中,STDDEV_POP() 函数等同于 STD() 函数。这里,我们对 CUSTOMERS 表的 AGE 列执行总体标准差计算。
SELECT STDDEV_POP(AGE) FROM CUSTOMERS;
输出
输出显示如下 −
STDDEV_POP(AGE) |
---|
3.063944369932459 |
样本标准差
MySQL 标准差是方差的平方根,用于计算数据的离散程度。
STDDEV_SAMP() 函数用于计算某一列中一组值的样本标准差。
以下是计算"样本标准差"的公式:
// 数学公式 s = sqrt(sum((x - mean)^2) / (n - 1))
示例
在下面的示例中,我们将计算先前创建的 CUSTOMERS 表的 AGE 列的样本标准差 -
SELECT STDDEV_SAMP(AGE) FROM CUSTOMERS;
输出
输出显示如下 −
STDDEV_SAMP(AGE) |
---|
3.309438162646486 |