oracle 子查询和窗口函数

描述:给定一张学生学科成绩表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:选取每个分区内的前两行。

相关推荐

  1. oracle 查询窗口函数

    2024-01-04 15:10:01       63 阅读
  2. 视图查询

    2024-01-04 15:10:01       34 阅读
  3. qt c++ 界面调用主窗口函数

    2024-01-04 15:10:01       29 阅读
  4. Oracle数据库之条件查询、模糊查询排序(四)

    2024-01-04 15:10:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-04 15:10:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-04 15:10:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-04 15:10:01       87 阅读
  4. Python语言-面向对象

    2024-01-04 15:10:01       96 阅读

热门阅读

  1. 深度学习必备框架PyTorch简介和参考资料

    2024-01-04 15:10:01       63 阅读
  2. python&Pandas二:数据读取与写入

    2024-01-04 15:10:01       66 阅读
  3. 原码、反码、补码,计算机中负数的表示

    2024-01-04 15:10:01       50 阅读
  4. 连接字符串

    2024-01-04 15:10:01       60 阅读
  5. 分布式【ZooKeeper面试题】

    2024-01-04 15:10:01       44 阅读
  6. word press 好用的插件

    2024-01-04 15:10:01       63 阅读