求选课在三门以上且各门课程均及格的学生的学号及其总成绩,查询结果按总成绩降序列出。
时间: 2024-02-25 14:59:26 浏览: 22
可以使用如下 SQL 语句来实现该查询:
```
SELECT student_id, SUM(score) AS total_score
FROM student_scores
WHERE score >= 60
GROUP BY student_id
HAVING COUNT(subject) >= 3
ORDER BY total_score DESC;
```
在上述 SQL 语句中,首先使用 WHERE 子句筛选出及格的成绩,然后使用 GROUP BY 子句按照学生 ID 进行分组,并且使用 HAVING 子句筛选出选课门数大于等于 3 门的学生。最后使用 SUM 聚合函数计算每个学生的总成绩,并按照总成绩降序排序。
相关问题
查询选修了“c03”课程的学生的学号及其成绩,查询结果按分数降序排列。
假设你的学生选课信息存储在一个名为“course”的表中,包含以下字段:学号(student_id)、课程编号(course_id)和成绩(score),那么可以使用以下SQL语句来查询选修了“c03”课程的学生的学号及其成绩,并按照分数降序排列:
```
SELECT student_id, score
FROM course
WHERE course_id = 'c03'
ORDER BY score DESC;
```
这将返回一个结果集,包含所有选修了“c03”课程的学生的学号和成绩,并按成绩从高到低排列。
查询选修3门以上课程的学生的学号、总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
好的,根据您的需求,可以使用如下的 SQL 语句来实现:
```
SELECT 学号, SUM(CASE WHEN 成绩 >= 60 THEN 成绩 ELSE 0 END) AS 总成绩
FROM 选课表
GROUP BY 学号
HAVING COUNT(*) >= 3
ORDER BY 总成绩 DESC;
```
其中,`选课表` 是包含了学生选课信息的表,包括学号、课程编号、成绩等字段。这里使用了 `SUM` 函数来计算每个学生的总成绩,同时使用了 `CASE WHEN` 语句来过滤掉不及格的课程。`HAVING` 子句用于筛选出选修 3 门及以上课程的学生,最后使用 `ORDER BY` 子句按照总成绩的降序排列输出结果。