SQL查询所选课程成绩都大于等于80分的学生所选的课程门数
时间: 2024-03-14 17:45:14 浏览: 75
可以使用如下的 SQL 查询语句来实现该功能:
```sql
SELECT s.student_id, COUNT(*) as selected_courses
FROM students s
INNER JOIN course_selection cs ON s.student_id = cs.student_id
INNER JOIN courses c ON cs.course_id = c.course_id
WHERE cs.score >= 80
GROUP BY s.student_id
```
该查询语句会将成绩大于等于80分的学生与他们所选的课程进行关联,然后通过 GROUP BY 子句按照学生ID进行分组统计每个学生所选的课程门数。最终结果是每个学生ID以及他所选的课程门数。
相关问题
写出SQL语句,查询所选课程成绩都大于等于80分(提示:使用having)的学生信息,包括Sno、Sname、CNUM,cnum表示所选课程门数列
好的,以下是SQL语句:
```
SELECT S.Sno, S.Sname, COUNT(SC.Cno) AS CNUM
FROM Student S, SC
WHERE S.Sno = SC.Sno AND SC.grade >= 80
GROUP BY S.Sno, S.Sname
HAVING COUNT(SC.Cno) = (SELECT COUNT(*) FROM Course)
```
解释一下:
- 首先从学生表(Student)和选课表(SC)中查询学生学号(Sno)、学生姓名(Sname)和所选课程门数(CNUM)。
- 在WHERE子句中,通过学生学号将两个表连接起来。
- 在WHERE子句中,只选择成绩大于等于80分的记录。
- 使用GROUP BY子句,根据学生学号和学生姓名对结果进行分组。
- 使用HAVING子句,只选择所选课程门数等于总课程门数的学生。
sql sever查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按 平均成绩降序排列。
好的,你可以使用以下 SQL 语句来查询:
```
SELECT 选课表.学号, AVG(成绩) AS 平均成绩, COUNT(*) AS 选课门数
FROM 选课表
WHERE 选课表.学号 IN (
SELECT 学号
FROM 选课表
GROUP BY 学号
HAVING COUNT(*) >= 2
)
GROUP BY 选课表.学号
ORDER BY AVG(成绩) DESC;
```
其中,`选课表` 是你所查询的选课信息表的表名,`学号` 和 `成绩` 是你所需要的字段名。首先在子查询中筛选出选修课程数大于等于2的学生,然后在主查询中统计这些学生的平均成绩和选课门数,并按照平均成绩降序排列。
阅读全文