Student(sno,sname,ssex,sage,clno); Course(cno,cname,credit); Class(clno,speciality,inyear,number,monitor); Grade(sno,cno,gmark); 查询选3学分的课最多的学生的学号、姓名和课程数
时间: 2023-12-03 11:46:26 浏览: 182
可以使用以下 SQL 语句来实现:
```sql
SELECT s.sno, s.sname, COUNT(*) AS course_count
FROM Student s, Course c, Grade g
WHERE s.sno = g.sno AND c.cno = g.cno AND c.credit = 3
GROUP BY s.sno, s.sname
HAVING COUNT(*) = (
SELECT MAX(count_)
FROM (
SELECT COUNT(*) AS count_
FROM Student s, Course c, Grade g
WHERE s.sno = g.sno AND c.cno = g.cno AND c.credit = 3
GROUP BY s.sno
) t
)
```
该语句通过连接三个表 Student、Course 和 Grade,筛选出选课学分为 3 的成绩记录,再按学号和姓名分组统计每位学生选了多少门 3 学分的课程。最后,通过子查询找出选课门数最多的学生,并返回其学号、姓名和课程数。
阅读全文