找到最佳击球手位置的最大平均值 运行 -Oracle SQL
Find the Maximum Average run of best Batsman's Position -Oracle SQL
请帮忙解决这个问题,
我有一个 table 叫击球手。每个击球手在每场比赛中都在不同的位置上比赛。
想要找到击球手的哪个位置在哪个位置具有最大平均数 运行。
请参考下面的例子 table 并帮助我 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
您可以使用聚合和 window 函数进行排名:
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;
如果不需要平均运行次数,首先使用 dense_rank 可以获得相同的结果:
select name, max(position) keep (dense_rank first order by avg_run desc)
from (
select name, position, avg(runs) avg_run from table1 group by name, position)
group by name order by name;
请帮忙解决这个问题, 我有一个 table 叫击球手。每个击球手在每场比赛中都在不同的位置上比赛。 想要找到击球手的哪个位置在哪个位置具有最大平均数 运行。 请参考下面的例子 table 并帮助我 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
您可以使用聚合和 window 函数进行排名:
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;
如果不需要平均运行次数,首先使用 dense_rank 可以获得相同的结果:
select name, max(position) keep (dense_rank first order by avg_run desc)
from (
select name, position, avg(runs) avg_run from table1 group by name, position)
group by name order by name;