如何解决查找最佳击球手位置的最大平均运行-Oracle SQL
请帮助实现这一期望, 我有一张叫蝙蝠侠的桌子。每个击球手在每场比赛中的位置都不同。 我想找到击球手的哪个位置在哪个位置有最大的平均跑分。 请参考下面的示例表,并帮助我使用SQL。
Name | Position | Runs
------------------------------
Dhoni | 1 | 2
Kholi | 1 | 50
Dhoni | 2 | 23
Kholi | 2 | 30
Dhoni | 3 | 25
Kholi | 3 | 12
Dhoni | 1 | 12
Kholi | 1 | 80
Dhoni | 2 | 15
Kholi | 2 | 30
Dhoni | 3 | 60
Kholi | 3 | 2
解决方法
您可以使用聚合和窗口功能进行排名:
select t.*
from (select name,position,avg(runs) as avg_runs,row_number() over (partition by name order by avg(runs) desc) as seqnum
from t
) t
where seqnum = 1;
,
如果您不需要先运行density_rank来进行平均运行,则可以获得相同的结果:
select name,max(position) keep (dense_rank first order by avg_run desc)
from (
select name,avg(runs) avg_run from table1 group by name,position)
group by name order by name;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。