mysql学生表 student(sid,sname,sage,ssex),其中, sid:学号,sname:学生姓名,sage:学生年龄,ssex:学生性别, 成绩表 sc(sid,sid,score),其中, sid:学号,sid:课程编号,score:成绩。 查询选修了两门及以上课程的全部学生的学号和姓名。显示sid、sname和课程数
时间: 2024-03-12 17:43:07 浏览: 116
你可以使用以下 SQL 语句查询选修了两门及以上课程的全部学生的学号和姓名,并显示课程数:
```
SELECT s.sid, s.sname, COUNT(sc.cno) AS course_num
FROM student s
JOIN sc ON s.sid = sc.sid
GROUP BY s.sid, s.sname
HAVING COUNT(sc.cno) >= 2;
```
其中,`JOIN` 用于连接两个表,`GROUP BY` 用于分组,`HAVING` 用于过滤分组后的结果。`COUNT()` 函数用于统计选修课程的数量。
相关问题
学生表 student(sid,sname,sage,ssex),其中, sid:学号,sname:学生姓名,sage:学生年龄,ssex:学生性别, 成绩表 sc(sid,sid,score),其中, sid:学号,sid:课程编号,score:成绩。 查询选修了两门及以上课程的全部学生的学号和姓名。显示sid、sname和课程数
可以使用如下 SQL 语句查询选修了两门及以上课程的全部学生的学号和姓名,以及选修课程数:
```sql
SELECT s.sid, s.sname, COUNT(*) AS course_num
FROM student s
INNER JOIN sc ON s.sid = sc.sid
GROUP BY s.sid, s.sname
HAVING COUNT(*) >= 2;
```
解释一下这条 SQL 语句的含义:
- 第一行中的 SELECT 子句指定了要查询的结果列,包括学号(sid)、学生姓名(sname)和选修课程数(course_num)。
- 第二行中的 FROM 子句指定了要查询的表格。我们需要连接学生表和成绩表,以获取学生的选课情况。
- 第三行中的 INNER JOIN 子句指定了连接条件,即学生表中的学号(sid)和成绩表中的学号(sid)相等。
- 第四行中的 GROUP BY 子句指定了分组条件,即按照学号(sid)和学生姓名(sname)进行分组。
- 第五行中的 HAVING 子句指定了筛选条件,即选修课程数大于等于 2。
- 最后的结果按照学号进行排序。
希望能够帮助到你!
Student(Sid,Sname,Sage,Ssex)学生表 Sid:学号 Sname:学生姓名 Sage:学生年龄 Ssex:学生性别 Course(Cid,Cname,Tid)课程表 Cid:课程编号 Cname:课程名称 Tid:教师编号 SC(Sid,Cid,score)成绩表 Sid:学号 Cid:课程编号 score:成绩 10.1 查询所有同学的学号、姓名、选课数、总成绩?
可以使用以下 SQL 语句查询所有同学的学号、姓名、选课数、总成绩:
```
SELECT Student.Sid, Sname, COUNT(SC.Cid) AS course_num, SUM(SC.score) AS total_score
FROM Student
LEFT JOIN SC ON Student.Sid = SC.Sid
GROUP BY Student.Sid, Sname;
```
这个查询语句使用了学生表 Student 和成绩表 SC 的连接查询,计算了每个学生的选课数和总成绩,最后使用 GROUP BY 和聚合函数对结果进行了分组和统计。LEFT JOIN 是为了包括那些没有选课的学生在内。
阅读全文