假设我们有当前的科目表和该科目每个学生的分数。
表:等级
Math: ANDY 80
Math: RYAN 70
Math: SARAH 95
Science: RYAN 60
Science: ANDY 90
Science: SARAH 75
我想写一个查询来获取主题的名称,谁的分数最高,以及它是什么。
查询的输出应如下所示:
Math SARAH 95
Science ANDY 90
什么样的sql(在oracle中)才能获得所需的输出?最好不使用windows函数。
2条答案
按热度按时间baubqpgj1#
你可以使用解析函数
rank()
:在子查询中,分析函数按降序排列每条记录
mark
在具有相同subject
. 然后,外部查询过滤每个组的顶部记录。如果有领带,则全部退回(您可以使用row_number()
为了避免这种情况,或者向order by
条款)。kx5bkwkv2#
在oracle中,可以使用聚合和
keep
:注意:这只保留一个学生每科,即使有关系。你可以用
listagg()
把他们都弄到手。