轻松上手MYSQL:掌握MYSQL聚合函数,数据分析不再难

06-01 1287阅读

轻松上手MYSQL:掌握MYSQL聚合函数,数据分析不再难

​🌈 个人主页:danci_
🔥 系列专栏:《设计模式》《MYSQL》
💪🏻 制定明确可量化的目标,坚持默默的做事。


✨欢迎加入探索MYSQL聚合函数之旅✨
    👋 大家好!文本学习和探索MYSQL聚合函数。👋 效率与精准是制胜的关键。MySQL聚合函数,作为数据库操作中的强大工具,能帮你快速进行数据统计、分析和汇总。本篇文章将带你轻松上手MySQL聚合函数,让复杂的数据处理变得简单高效。准备好提升你的数据库技能了吗?让我们一同揭开MySQL聚合函数的神秘面纱,让你的数据飞起来!

目录

一、AVG 求平均值

二、COUNT 统计数量(非null值)

三、GROUP_CONCAT 分组列连接成字符串

四、MAX 取最大值

五、MIN 取最小值

六、SUM 求和(非null值)

七、BIT_AND 按位与运算(非null值)

八、BIT_OR 按位或运算(非null值)

九、BIT_XOR 按位异或运算(非null值)

十、JSON_ARRAYAGG 聚合为一个 JSON 数组

十一、JSON_OBJECTAGG 聚合为一个 JSON 对象

十二、STD 求总体标准差(非null)

十三、STDDEV 求总体标准差(非null)

十四、STDDEV_POP  求总体标准差(非null)

十五、STDDEV_SAMP 计算样本标准差(非null)

十六、VAR_POP 计算总体方差(非null)

十七、VARIANCE 计算总体方差(非null)

十八、VAR_SAMP 计算样本方差(非null)


一、AVG 求平均值

MySQL AVG() 函数计算并返回表达式的平均值。

忽略 NULL 值。

语法:

AVG(expr)
AVG(DISTINCT expr)
SELECT AVG(expr), ...
FROM table_name
[WHERE ...];
SELECT AVG(expr), group_expr1, group_expr2, ...
FROM table_name
[WHERE ...]
GROUP BY group_expr1, group_expr2, ...;

参数说明

  • expr:expr 一个用于聚合运算的表达式。它可以是一个列名,也可以是一个表达式

  • group_expr1, group_expr2, ...:用于分组的表达式或者列名。

返回值

  • 表达式的平均值。
  • 返回 NULL情况:没有匹配的行。

示例:

CREATE TABLE `student_score` (
    `score` INT NOT NULL
);
INSERT INTO `student_score` (`score`)
VALUES (80),
    (90),
    (84),
    (96),
    (80),
    ( 98),
    ( 75);
SELECT AVG(score) from student_score; // 86.1429

 

二、COUNT 统计数量(非null值)

MySQL COUNT() 函数用于统计表达式代表的所有值的中的非 NULL 值的数量。

语法:

COUNT(expr)
SELECT COUNT(expr), ...
FROM table_name
[WHERE ...];
SELECT COUNT(expr), group_expr1, group_expr2, ...
FROM table_name
[WHERE ...]
GROUP BY group_expr1, group_expr2, ...;

参数说明

  • expr:expr 一个需要统计数量的表达式。它可以是一个列名,也可以是一个表达式。

  • group_expr1, group_expr2, ...:用于分组的表达式或者列名。

返回值

  • 所有行中的表达式代表的所有值的中的非 NULL 值的数量。
  • 注意: 如果使用 COUNT(*) 或者类似于 COUNT(1) 之类的语句,则会统计 NULL 值。

示例:

CREATE TABLE `student_score` (
    `score` INT
);
INSERT INTO `student_score` (`score`)
VALUES (80),
    (90),
    (84),
    (96),
    (80),
    ( 98),
    ( 75),
    ( NULL);
SELECT 
	COUNT(score),        // 7
	COUNT(*),            // 8
	COUNT(1)             // 8
	from student_score;

 

三、GROUP_CONCAT 分组列连接成字符串

MySQL GROUP_CONCAT() 函数将一个分组中指定的列或表达式的值连接成一个字符串并返回。

语法:

GROUP_CONCAT(
    [DISTINCT] expr [, expr2 ...]
    [ORDER BY ...]
    [SEPARATOR separator]
)
SELECT GROUP_CONCAT(expr), ...
FROM table_name
[WHERE ...]
[GROUP BY group_expr1, group_expr2, ...];

参数说明

  • expr [, expr2 ...]:必须的。它指定了要连接的一个或者多个列或表达式。

  • ORDER BY:可选的。它用于对要连接的内容排序。

  • SEPARATOR separator:可选的。separator 连接符。默认是 ,。

返回值

  • 将通过列或者表达式指定的内容连接起来。
  • 返回 NULL情况:结果集没有任何行。

示例:

DROP TABLE IF EXISTS `student_score`;
CREATE TABLE `student_score` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `score` INT NOT NULL
);
SELECT
    name AS `Name`,
    GROUP_CONCAT(subject) AS `Subjects`
FROM student_score
GROUP BY name;
+------+--------------+
| Name | Subjects     |
+------+--------------+
| Tim  | English      |
| Tom  | Math,English |
+------+--------------+
----------------------------------------------------------
SELECT
    name AS `Name`,
    GROUP_CONCAT(subject SEPARATOR '/') AS `Subjects`
FROM student_score
GROUP BY name;
+------+--------------+
| Name | Subjects     |
+------+--------------+
| Tim  | English      |
| Tom  | Math/English |
+------+--------------+
----------------------------------------------------------
SELECT
    name AS `Name`,
    GROUP_CONCAT(
        CONCAT(subject, '-'), score
        ORDER BY subject
        SEPARATOR '/'
    ) AS `Scores`
FROM student_score
GROUP BY name;
或
SELECT
    name AS `Name`,
    GROUP_CONCAT(
        CONCAT_WS('-', subject, score)
        ORDER BY subject
        SEPARATOR '/'
    ) AS `Scores`
FROM student_score
GROUP 
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码