MariaDB STD() 函数的基础用法与实例

MariaDB STD() 函数用来计算一组数值的标准差。

发布于

MariaDB STD() 函数用来计算一组数值的标准差。标准差是衡量数据分散程度的重要统计指标之一。

语法

MairaDB STD() 函数的语法如下:

STD(expr)
  • expr 是一个表达式,通常是一个字段名或者计算表达式。
  • 如果 expr 中包含 NULL 值,那么 NULL 值会被忽略。
  • 函数返回该表达式所有非 NULL 值的标准差。

实例

计算一个数值字段的标准差

DROP TABLE IF EXISTS scores;
CREATE TABLE scores (
    id INT PRIMARY KEY AUTO_INCREMENT,
    score INT NOT NULL
);

INSERT INTO scores (score) VALUES
    (80), (85), (90), (75), (92);

SELECT STD(score) AS std_score
FROM scores;

以下是该语句的输出:

+-----------+
| std_score |
+-----------+
|    6.2801 |
+-----------+

结果显示这组分数的标准差大约为 5.92。

计算多个字段相加后的标准差

DROP TABLE IF EXISTS student_records;
CREATE TABLE student_records (
    id INT PRIMARY KEY AUTO_INCREMENT,
    math_score INT NOT NULL,
    physics_score INT NOT NULL,
    chemistry_score INT NOT NULL
);

INSERT INTO student_records (math_score, physics_score, chemistry_score) VALUES
    (80, 75, 88), (92, 87, 76), (67, 90, 82), (53, 81, 94);

SELECT STD(math_score + physics_score + chemistry_score) AS std_total
FROM student_records;

以下是该语句的输出:

+-----------+
| std_total |
+-----------+
|    9.6534 |
+-----------+

结果显示每个学生三门科目总分的标准差大约为 16.77。

计算带条件的标准差

DROP TABLE IF EXISTS product_sales;
CREATE TABLE product_sales (
    id INT PRIMARY KEY AUTO_INCREMENT,
    product VARCHAR(30) NOT NULL,
    amount INT NOT NULL
);

INSERT INTO product_sales (product, amount) VALUES
    ('Product A', 100), ('Product B', 120), ('Product A', 80),
    ('Product C', 90), ('Product B', 150), ('Product A', 110);

SELECT STD(amount) AS std_amount
FROM product_sales
WHERE product = 'Product A';

以下是该语句的输出:

+------------+
| std_amount |
+------------+
|    12.4722 |
+------------+

结果显示 ‘Product A’ 销售金额的标准差大约为 15.28。

分组后计算标准差

DROP TABLE IF EXISTS company_salaries;
CREATE TABLE company_salaries (
    id INT PRIMARY KEY AUTO_INCREMENT,
    department VARCHAR(20) NOT NULL,
    salary INT NOT NULL
);

INSERT INTO company_salaries (department, salary) VALUES
    ('Sales', 5000), ('Sales', 6000), ('Sales', 5500),
    ('Marketing', 6500), ('Marketing', 5800), ('Marketing', 6200),
    ('IT', 7000), ('IT', 6800), ('IT', 7200);

SELECT department, STD(salary) AS std_salary
FROM company_salaries
GROUP BY department;

以下是该语句的输出:

+------------+------------+
| department | std_salary |
+------------+------------+
| IT         |   163.2993 |
| Marketing  |   286.7442 |
| Sales      |   408.2483 |
+------------+------------+

结果显示了不同部门薪资的标准差。

计算多列数据的组合标准差

DROP TABLE IF EXISTS product_dimensions;
CREATE TABLE product_dimensions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    product VARCHAR(30) NOT NULL,
    length INT NOT NULL,
    width INT NOT NULL,
    height INT NOT NULL
);

INSERT INTO product_dimensions (product, length, width, height) VALUES
    ('Product X', 10, 5, 8), ('Product Y', 12, 6, 10),
    ('Product Z', 8, 4, 6), ('Product X', 11, 5, 7);

SELECT product, STD(length * width * height) AS std_volume
FROM product_dimensions
GROUP BY product;

以下是该语句的输出:

+-----------+------------+
| product   | std_volume |
+-----------+------------+
| Product X |     7.5000 |
| Product Y |     0.0000 |
| Product Z |     0.0000 |
+-----------+------------+

结果显示了 ‘Product X’ 体积的标准差大约为 7.07,而其他产品由于只有一个维度数据,所以标准差为 0。

相关函数

以下是几个与 MairaDB STD() 相关的几个函数:

  • MariaDB AVG() 函数用来计算数值平均值。
  • MariaDB SUM() 函数用来计算数值总和。
  • MariaDB VAR_POP() 函数用来计算整体数据的方差。
  • MariaDB VAR_SAMP() 函数用来计算样本数据的方差。
  • MariaDB STDDEV_POP() 函数用来计算整体数据的标准差。

结论

MariaDB STD() 函数是一个非常有用的统计函数,可以方便地计算数值字段的标准差。通过本文提供的示例,相信您已经对该函数有了全面的理解。在处理统计数据时,STD() 函数将是您的得力助手。