SQL 查询练习:学生选课信息统计与分析

本文通过七个 SQL 查询练习,展示如何使用内连接、外连接、派生表、嵌套查询等技术,统计分析学生选课信息,例如查询计算机系学生选修课程信息,查询没有选修课程的学生信息,查询没有人选修的课程信息,统计每名学生选修课程的门数和平均分,统计除特定课程外的其他课程的选课人数和平均分。

1. 查询计算机系学生选修课程的信息。结果显示学号,姓名,性别,选修课程名和成绩。(请使用显式内连接和派生表查询两种方式完成)

显式内连接方式

SELECT s.学号, s.姓名, s.性别, c.选修课程名, c.成绩
FROM 学生表 s
INNER JOIN 课程成绩表 c ON s.学号 = c.学号
WHERE s.所在系 = '计算机系';

派生表方式

SELECT s.学号, s.姓名, s.性别, c.选修课程名, c.成绩
FROM 学生表 s
INNER JOIN (SELECT 学号, 选修课程名, 成绩 FROM 课程成绩表) c ON s.学号 = c.学号
WHERE s.所在系 = '计算机系';

2. 查询没有选修课程的学生学号,姓名和所在系。(请使用外连接方式完成)

SELECT s.学号, s.姓名, s.所在系
FROM 学生表 s
LEFT JOIN 课程成绩表 c ON s.学号 = c.学号
WHERE c.学号 IS NULL;

3. 查询有哪些课程没有人选修,结果显示课程号,课程名和学分。(请使用外连接和嵌套查询两种方式完成)

外连接方式

SELECT c.课程号, c.课程名, c.学分
FROM 课程表 c
LEFT JOIN 课程成绩表 s ON c.课程号 = s.课程号
WHERE s.学号 IS NULL;

嵌套查询方式

SELECT c.课程号, c.课程名, c.学分
FROM 课程表 c
WHERE c.课程号 NOT IN (SELECT 课程号 FROM 课程成绩表);

4. 统计每名学生选修课程的门数和平均分,显示学生学号,姓名,所在系和选课门数及课程平均分。结果显示选课门数排名前3的学生信息。

SELECT s.学号, s.姓名, s.所在系, COUNT(c.课程号) AS 选课门数, AVG(c.成绩) AS 课程平均分
FROM 学生表 s
INNER JOIN 课程成绩表 c ON s.学号 = c.学号
GROUP BY s.学号, s.姓名, s.所在系
ORDER BY 选课门数 DESC
LIMIT 3;

5. 统计除2号课程外的其它课程的选课人数和平均分,显示课程号,课程名,学分,选课人数及平均分。最后结果中要包含2号课程的信息。

SELECT c.课程号, c.课程名, c.学分, COUNT(s.学号) AS 选课人数, AVG(s.成绩) AS 平均分
FROM 课程表 c
LEFT JOIN 课程成绩表 s ON c.课程号 = s.课程号
WHERE c.课程号 <> 2
GROUP BY c.课程号, c.课程名, c.学分

UNION

SELECT c.课程号, c.课程名, c.学分, COUNT(s.学号) AS 选课人数, AVG(s.成绩) AS 平均分
FROM 课程表 c
INNER JOIN 课程成绩表 s ON c.课程号 = s.课程号
WHERE c.课程号 = 2
GROUP BY c.课程号, c.课程名, c.学分;

注意:

  • 以上代码中的表名 学生表课程成绩表课程表 仅为示例,实际使用时请替换为您的数据库中实际的表名。
  • 确保 SQL 语句中的字段名与您的数据库中实际字段名一致。
  • 以上代码仅供参考,具体实现方式可能因数据库系统和数据结构的不同而有所差异。
SQL 查询练习:学生选课信息统计与分析

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

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