SQL查询指定学号为s1的学生的选课课程名和成绩,并按成绩降序排列已知s(sno,sname,age,gender,dname),c(cno,cname,credit,pre_cno),sc(sno,cno,score)
时间: 2024-05-27 12:12:30 浏览: 150
你好,我可以回答你的问题。下面是 SQL 查询指定学号为 s1 的学生的选课课程名和成绩,并按成绩降序排列的 SQL 语句:
SELECT c.cname, sc.score
FROM sc
INNER JOIN c ON sc.cno = c.cno
WHERE sc.sno = 's1'
ORDER BY sc.score DESC;
希望这个回答对你有所帮助。如果你还有其他问题,可以继续问我哦!
相关问题
表SC 列名有Sno作学号 Cno作选课课程号 Grade作成绩 查询选修课程数大于等于2的学生的学号、平均成绩和选课门 数,并按平 均成绩降序排列SQL查询
以下是你所需的 SQL 查询:
```
SELECT Sno, AVG(Grade) AS AvgGrade, COUNT(DISTINCT Cno) AS CourseCount
FROM SC
GROUP BY Sno
HAVING COUNT(DISTINCT Cno) >= 2
ORDER BY AvgGrade DESC;
```
这个查询首先从 SC 表中选出学号(Sno)、成绩(Grade)和课程号(Cno)列。然后,它按照学号进行分组,并计算平均成绩和选课门数。最后,筛选出选修课程数大于等于2的学生,并按照平均成绩降序排列输出结果。
在s表中有sno和sn,在sc表中有sno,cno和score,现查询每位学生的学号、姓名和选课成绩的平均成绩,成绩为null不计算在平均成绩之内,按从高到低降序排列
这个问题描述的是一个SQL查询需求,涉及到两个表:s表(包含学生信息,如`sno`和`sn`)和sc表(包含学生选课信息,如`sno`(学号)、`cno`(课程编号)和`score`(成绩))。你需要获取每个学生的`sno`、`sn`以及他们所有课程的平均成绩(忽略NULL值),并且结果按照平均成绩从高到低排序。
可以使用以下SQL查询来完成这个任务:
```sql
SELECT s.sno, s.sn, AVG(sc.score) as average_score
FROM s
LEFT JOIN sc ON s.sno = sc.sno
WHERE sc.score IS NOT NULL
GROUP BY s.sno, s.sn
ORDER BY average_score DESC;
```
这里做了以下操作:
1. `JOIN`:将s表和sc表通过`sno`字段连接在一起。
2. `LEFT JOIN`:确保不会漏掉s表中的任何一个学生,即使他们在sc表中没有对应记录。
3. `WHERE`:过滤出`score`不为NULL的结果。
4. `AVG(sc.score)`:计算每个学生选修课程的平均成绩。
5. `GROUP BY`:按`sno`和`s.sn`分组,以便为每个学生计算平均成绩。
6. `ORDER BY`:结果按照平均成绩从高到低排序。
阅读全文