假设有三张表:学生表(students)、课程表(courses)和成绩表(scores),它们的结构与数据如下:

学生表(students):

| 学生编号 | 学生姓名 | | -------- | -------- | | 001 | 张三 | | 002 | 李四 | | 003 | 王五 |

课程表(courses):

| 课程编号 | 课程名称 | 学分 | | -------- | -------- | ---- | | 001 | 语文 | 3 | | 002 | 数学 | 4 | | 003 | 英语 | 2 | | 004 | 物理 | 3 |

成绩表(scores):

| 学生编号 | 课程编号 | 成绩 | | -------- | -------- | ---- | | 001 | 001 | 80 | | 001 | 002 | 85 | | 001 | 003 | 90 | | 002 | 001 | 75 | | 002 | 002 | 80 | | 002 | 004 | 70 | | 003 | 002 | 90 | | 003 | 003 | 85 |

可以使用以下SQL语句统计每位学生选修课程的门数、学分及其平均成绩:

SELECT s.学生编号, s.学生姓名, COUNT(*) AS 选修课程门数, SUM(c.学分) AS 总学分, AVG(sc.成绩) AS 平均成绩
FROM 学生表 s
LEFT JOIN 成绩表 sc ON s.学生编号 = sc.学生编号
LEFT JOIN 课程表 c ON sc.课程编号 = c.课程编号
GROUP BY s.学生编号, s.学生姓名

解释:

  1. 使用LEFT JOIN连接三张表,以学生表为主表,关联条件为学生编号;
  2. 使用COUNT函数统计每位学生选修课程的门数;
  3. 使用SUM函数统计每位学生选修课程的总学分;
  4. 使用AVG函数统计每位学生的平均成绩;
  5. 使用GROUP BY分组,按照学生编号和学生姓名分组
sqlserver统计每位学生选修课程的门数、学分及其平均成绩;

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

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