返回

用MySQL分组查询和聚合函数玩转数学成绩统计

后端

数据分析的“取经大法”:聚合函数和分组查询

准备好踏上数据分析的精彩旅程了吗?别担心,有了 MySQL 的聚合函数和分组查询,这个过程将轻松简单。它们就像孙悟空的“取经大法”,助你从数据中提炼出珍贵的见解。

聚合函数:数据统计的“炼丹炉”

聚合函数就像神奇的“炼丹炉”,可以将一堆数据“炼化”成有价值的信息。它们让你轻松统计数据的个数、求和、找出最大值、最小值和平均值。

1. 个数统计:count()

count() 函数就像一个勤劳的“计数器”,可以统计出表中的行数,或者计算指定列的非空值个数。想知道班级里有多少个同学?只需这样问:

SELECT count(*) AS student_count
FROM students;

2. 求和:sum()

sum() 函数就像一个“加法器”,可以将一列数字加个痛快。想要了解班级里所有同学的数学成绩总和?很简单:

SELECT sum(math_score) AS total_math_score
FROM students;

3. 求最大值:max()

max() 函数就像个“老大”,可以从一列数字中找出最大的那个。想知道班级里数学成绩最高是多少?直接问它:

SELECT max(math_score) AS highest_math_score
FROM students;

4. 求最小值:min()

min() 函数就像个“小弟”,可以从一列数字中找出最小的那个。想知道班级里数学成绩最低是多少?它会告诉你:

SELECT min(math_score) AS lowest_math_score
FROM students;

5. 求平均值:avg()

avg() 函数就像一个“公平秤”,可以算出一列数字的平均值。想知道班级里同学们的数学成绩平均分是多少?问它准没错:

SELECT avg(math_score) AS average_math_score
FROM students;

分组查询:数据分类统计的“法宝”

聚合函数只能对整张表的数据进行统计,但分组查询就像一个强大的“分类器”,可以将数据按指定列分组,然后分别进行聚合统计。

1. 按一列分组:GROUP BY

GROUP BY 子句就像一个“分类目录”,它告诉 MySQL 按照哪一列数据进行分组。想知道男生和女生的数学成绩统计情况?这样分组:

SELECT gender,
       count(*) AS student_count,
       sum(math_score) AS total_math_score,
       max(math_score) AS highest_math_score,
       min(math_score) AS lowest_math_score,
       avg(math_score) AS average_math_score
FROM students
GROUP BY gender;

2. 按多列分组:GROUP BY + GROUP BY

GROUP BY 子句还可以组合使用,按多列数据进行分组。想知道不同班级不同性别的数学成绩统计情况?这样分组:

SELECT class, gender,
       count(*) AS student_count,
       sum(math_score) AS total_math_score,
       max(math_score) AS highest_math_score,
       min(math_score) AS lowest_math_score,
       avg(math_score) AS average_math_score
FROM students
GROUP BY class, gender;

聚合函数与分组查询:数据分析的“太极”

聚合函数和分组查询就像“太极”中的阴阳,相辅相成,缺一不可。聚合函数负责统计,分组查询负责分类,二者配合,让你尽情探索数据,挖掘宝藏!

常见问题解答

Q1:什么是聚合函数?

聚合函数可以对数据进行统计,例如求和、求平均值和查找最大值。

Q2:什么是分组查询?

分组查询可以将数据按指定列分组,然后分别进行聚合统计。

Q3:如何使用 GROUP BY 进行分组?

在 SELECT 语句中使用 GROUP BY 子句,指定要分组的列。

Q4:聚合函数和分组查询有什么区别?

聚合函数对整张表的数据进行统计,而分组查询先将数据分组,再分别进行统计。

Q5:如何提高聚合函数和分组查询的性能?

使用索引可以提高查询速度。