select s.s_name , s.s_birth ,s.s_sex,sc.s_score from (select s_id, c_id, s_score, row_number() over(distribute by c_id sort by s_score desc) rowNum from score) sc left join student s on s.s_id = sc.s_id where sc.rowNum between 2 and 3;
时间: 2024-02-19 07:03:17 浏览: 123
对学生信息以成绩高到低排序
5星 · 资源好评率100%
这是一个 SQL 查询语句,用于查询学生表和成绩表中的信息。具体来说,它使用了子查询和窗口函数,以及左连接和条件筛选。
子查询部分是:
```
select s_id, c_id, s_score,
row_number() over(distribute by c_id sort by s_score desc) rowNum
from score
```
这个子查询用于给每个课程按照成绩从高到低排序,并为每个学生的排名添加一个行号。其中,`distribute by c_id` 表示按照课程 ID 进行分组,`sort by s_score desc` 表示按照成绩倒序排序。
主查询部分是:
```
select s.s_name, s.s_birth, s.s_sex, sc.s_score
from (子查询) sc
left join student s on s.s_id = sc.s_id
where sc.rowNum between 2 and 3
```
这个主查询使用了左连接,将学生表和子查询结果按照学生 ID 进行连接,并筛选出排名为第二和第三的学生信息。最终,查询结果包括学生姓名、出生日期、性别和对应课程的成绩。
阅读全文