学生表 student(sid,sname,sage,ssex),其中,si d:学号,sname:学生姓名,sage:学生年龄,sse x:学生性别, 成绩表 sc(sid,sid,score),其中,sid:学号,sid: 课程编号,score:成绩。 查询选修了两门及以上课程的全部学生的学号和姓 名。显示sid、sname和课程数
时间: 2024-03-01 19:55:10 浏览: 115
可以使用如下 SQL 语句查询选修了两门及以上课程的全部学生的学号和姓名,并显示选修课程数:
```
SELECT student.sid, student.sname, COUNT(DISTINCT sc.cid) AS course_count
FROM student
INNER JOIN sc ON student.sid = sc.sid
GROUP BY student.sid, student.sname
HAVING COUNT(DISTINCT sc.cid) >= 2;
```
其中,`SELECT` 语句用于选择需要查询的字段,这里包括学生学号、学生姓名和选修课程数,使用 `COUNT(DISTINCT sc.cid)` 统计每个学生选修的不同课程数量。`FROM` 语句用于指定需要查询的表,这里包括学生表 `student` 和成绩表 `sc`,使用 `INNER JOIN` 连接两个表,连接条件为学生的学号和成绩表中的学号相等。`GROUP BY` 语句将结果按照学生学号和姓名分组,以便对每个学生的选修课程数进行统计。`HAVING` 语句用于筛选选修课程数大于等于2门的学生。
相关问题
学生表 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。
- 最后的结果按照学号进行排序。
希望能够帮助到你!
mysql学生表 student(sid,sname,sage,ssex),其中, sid:学号,sname:学生姓名,sage:学生年龄,ssex:学生性别, 成绩表 sc(sid,sid,score),其中, sid:学号,sid:课程编号,score:成绩。 查询选修了两门及以上课程的全部学生的学号和姓名。显示sid、sname和课程数
你可以使用以下 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()` 函数用于统计选修课程的数量。
阅读全文