使用SUM()函数结合GROUP BY子句可计算MySQL中按学生或课程等维度的总分,通过WHERE筛选原始数据、HAVING过滤聚合结果,并注意索引优化以提升性能。

要计算MySQL中的总分,最直接且核心的方法是使用聚合函数
SUM()
GROUP BY
在MySQL里算总分,这事儿听起来简单,但实际操作起来,根据你的具体需求,会有好几种玩法。最核心的当然是
SUM()
SUM()
假设我们有一个
grades
student_id
course_id
score
CREATE TABLE grades (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
score DECIMAL(5, 2) NOT NULL
);
INSERT INTO grades (student_id, course_id, score) VALUES
(101, 1, 85.5),
(101, 2, 90.0),
(101, 3, 78.0),
(102, 1, 92.0),
(102, 2, 88.5),
(103, 1, 75.0),
(103, 3, 82.0),
(101, 4, 60.0); -- 增加一条数据,让学生101有更多分数1. 计算所有学生所有课程的总分 这个最直接,就是对整个
score
SELECT SUM(score) AS total_overall_score FROM grades;
2. 计算每个学生的总分 这是最常见的需求之一。我们需要根据
student_id
score
SELECT
student_id,
SUM(score) AS total_student_score
FROM
grades
GROUP BY
student_id;这里
GROUP BY student_id
student_id
SUM(score)
3. 计算每门课程的总分 同理,如果想看每门课的总分(比如所有学生在这门课上的总得分),就按
course_id
SELECT
course_id,
SUM(score) AS total_course_score
FROM
grades
GROUP BY
course_id;4. 结合条件进行统计 有时候我们可能只想统计特定条件下的总分,比如只统计分数高于80分的总和。
WHERE
SELECT
student_id,
SUM(score) AS total_high_score
FROM
grades
WHERE
score > 80
GROUP BY
student_id;这里需要注意
WHERE
GROUP BY
5. 对聚合结果进行筛选 (HAVING) 如果你想在分组聚合之后,再对聚合结果进行筛选,比如只显示总分超过200的学生,那就需要
HAVING
HAVING
GROUP BY
SELECT
student_id,
SUM(score) AS total_student_score
FROM
grades
GROUP BY
student_id
HAVING
SUM(score) > 200;HAVING
WHERE
在实际工作中,我们可能还会遇到更复杂的情况,比如一个学生在不同学期的总分,或者需要关联其他表来获取学生姓名、课程名称等信息。这时候就需要用到
JOIN
SUM()
GROUP BY
聚合函数,说白了,就是把一堆数据“揉”成一个概括性的值。除了
SUM()
AVG()
COUNT()
MAX()
MIN()
聚合函数的作用:
COUNT(DISTINCT column)
常见误区:
WHERE
HAVING
WHERE
GROUP BY
HAVING
GROUP BY
WHERE
WHERE SUM(score) > 200
*`COUNT()
与
COUNT(*)
NULL
COUNT(column)
NULL
COUNT(score)
COUNT(*)
不恰当的GROUP BY
SELECT
GROUP BY
SELECT student_id, student_name, SUM(score) FROM grades GROUP BY student_id
student_name
GROUP BY
student_id
student_name
SELECT student_id, student_name, SUM(score) FROM students JOIN grades USING(student_id) GROUP BY student_id, student_name
性能考量: 聚合函数尤其是在大数据量下,可能会比较耗时。
GROUP BY
GROUP BY
WHERE
理解这些,能让你在处理数据时少走很多弯路,写出更高效、更准确的SQL。
性能优化,这几乎是所有数据库操作都绕不开的话题,尤其是在处理大量数据进行分组统计时。一个慢查询可能拖垮整个应用,所以这块儿是真得好好琢磨琢磨。
GROUP BY
以上就是MySQL如何计算总分_MySQL聚合函数与分组统计计算教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号