计算学生平均成绩:处理 MySQL 中的缺失成绩

假设你有一个名为 'sc' 的学生选课表,其中包含学生的学号 (sno)、课程号 (cno) 和成绩 (grade)。

create table sc (
  sno char(8),
  cno char(4),
  grade int,
  primary key(sno, cno)
);

你想要计算每个学生的平均成绩,但有些学生可能没有参加所有课程,导致某些课程的成绩为 NULL。

可以使用以下 SQL 查询语句来实现:

SELECT sno, AVG(grade) AS average_grade
FROM sc
GROUP BY sno;

这段代码使用 AVG 函数计算每个学生的平均成绩,并使用 GROUP BY 子句按学号分组。

处理 NULL 值

上述查询只会返回有成绩记录的学生的平均成绩。要包含成绩为 NULL 的学生,可以使用 COALESCE 函数将 NULL 值替换为 0:

SELECT sno, AVG(COALESCE(grade, 0)) AS average_grade
FROM sc
GROUP BY sno;

COALESCE 函数会返回其参数列表中的第一个非 NULL 值。在本例中,如果 grade 为 NULL,则返回 0,否则返回 grade 的值。

注意:

  • 具体的 SQL 查询语句可能因数据库表结构和业务需求而有所不同。
  • 以上示例提供了一种常见的解决方案,您需要根据实际情况进行调整。
MySQL 计算学生平均成绩:处理缺失成绩的 SQL 查询

原文地址: https://www.cveoy.top/t/topic/1YL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录