sqlsever 查询选修课程编号为0003的人数和该课程有成绩的人数及平均成绩。
时间: 2024-05-05 20:16:07 浏览: 177
假设选修课程编号为0003的课程在成绩表中的字段名为"course_id",成绩字段名为"score",学生编号字段名为"student_id",学生表名为"students",成绩表名为"scores",则SQL语句如下:
查询选修课程编号为0003的人数:
```
SELECT COUNT(DISTINCT student_id) AS num_students
FROM scores
WHERE course_id = '0003';
```
查询该课程有成绩的人数及平均成绩:
```
SELECT COUNT(DISTINCT student_id) AS num_students, AVG(score) AS avg_score
FROM scores
WHERE course_id = '0003' AND score IS NOT NULL;
```
注意:如果某个学生选修了该课程但没有成绩,则该学生不会被计入有成绩的人数和平均成绩的计算中。
相关问题
SQL SEVER查询选修了课程的学生总人数。
好的,您可以尝试使用以下 SQL 查询语句:
```
SELECT COUNT(DISTINCT student_id) as student_count
FROM student_course;
```
解释一下这个查询语句:
- `student_course` 是指学生选课表的表名,您需要替换成您实际使用的表名。
- `DISTINCT student_id` 表示去除重复的学生编号,只计算选修了课程的学生总人数。
- `COUNT(*)` 表示计算学生总数。
- `as student_count` 表示将计算结果重命名为 student_count。
希望这个查询语句能够帮到您!
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的学生,然后在主查询中统计这些学生的平均成绩和选课门数,并按照平均成绩降序排列。
阅读全文