oracle 子查询和窗口函数
2024-01-03 16:11:27
描述:给定一张学生学科成绩表base_student_grade,字段id表示学生学号,name为姓名,subject表示学科,grade为某学科成绩。使用子查询和窗口函数查询每个学生成绩最高的学科和分数。
select id,name,subject,grade
from (
select id,name,subject,grade,
row_number() over(partition by id,name order by grade desc) as rn
from base_student_grade
) where rn=1
注:
1. row_number() :窗口函数。为结果集中的每一行生成一个唯一的行号。
2. partition by:将数据按照id,name进行分区,即将具有相同id,name的行分为同一个分区。
3. order by grade desc:每个分区按照grade降序排列。
4. rn=1:选取每个分区内的第一行,rn=2:选取每个分区内的第二行,rn<=2:选取每个分区内的前两行。
文章来源:https://blog.csdn.net/beautiful77moon/article/details/135363331
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!