SQL练习:大学课程数据查询

需积分: 0 0 下载量 183 浏览量 更新于2024-08-04 收藏 1.41MB PDF 举报
"该资源是关于SQL的实践练习,提供了几个查询问题,涉及数据库操作,如查找特定部门的课程、获取指定教师教授的学生ID、查询最高薪资的教师、找出所有最高薪资的教师、统计每个秋季2017课程的注册人数、找出所有秋季2017课程的最大注册人数以及特定学期的课程等。建议在提供的数据库上实际运行这些查询以获得结果。" 在SQL中,这些问题可以通过不同的查询语句来解决。以下是根据题目描述对每个查询的解答: a. 找到计算机科学系(Com.P.Si. Department)有3次修订的课程标题: ```sql SELECT title FROM courses WHERE department = 'Com.P.Si.' AND revisions = 3; ``` 此查询将返回所有在计算机科学系且修订次数为3的课程标题。 b. 查找由名为Einstein的教师教授的所有学生ID,并确保结果中没有重复: ```sql SELECT DISTINCT student_id FROM enrollments JOIN sections ON enrollments.section_id = sections.id JOIN instructors ON sections.instructor_id = instructors.id WHERE instructors.name = 'Einstein'; ``` 这将返回Einstein教授所教学生的唯一ID。 c. 查找任何教师的最高薪资: ```sql SELECT MAX(salary) FROM instructors; ``` 这条查询将返回所有教师中最高的薪水。 d. 找到所有薪资最高的教师(可能存在多个相同薪资的教师): ```sql SELECT * FROM instructors WHERE salary = (SELECT MAX(salary) FROM instructors); ``` 这将返回所有薪资与最高薪资相等的教师信息。 e. 统计每个秋季2017课程的注册人数: ```sql SELECT sections.id, COUNT(DISTINCT enrollments.student_id) AS enrollment_count FROM sections JOIN enrollments ON sections.id = enrollments.section_id WHERE sections.semester = 'Fall' AND sections.year = 2017 GROUP BY sections.id; ``` 这将按课程ID显示每个秋季2017课程的注册学生数。 f. 找出所有秋季2017课程的最大注册人数: ```sql SELECT MAX(enrollment_count) AS max_enrollment FROM ( SELECT sections.id, COUNT(DISTINCT enrollments.student_id) AS enrollment_count FROM sections JOIN enrollments ON sections.id = enrollments.section_id WHERE sections.semester = 'Fall' AND sections.year = 2017 GROUP BY sections.id ) AS subquery; ``` 这将返回秋季2017所有课程中的最大注册人数。 g. 找到秋季2017学期的课程(查询未完整,可能需要额外的信息): 由于查询不完整,假设我们正在寻找的是秋季2017学期的课程ID和标题,可以这样写: ```sql SELECT sections.id, courses.title FROM sections JOIN courses ON sections.course_id = courses.id WHERE sections.semester = 'Fall' AND sections.year = 2017; ``` 这将返回秋季2017学期的所有课程及其ID和标题。