我有一张每年有球员的表格和一些统计数据。例如(player_key、player_name、year、3point_trials、3point_score(
我希望每年都有最好的表现(3point_score/3point_trials(。如果其中两个有相同的%,那么盈亏平衡就是三分之一,谁的试验次数最多。
产量为每年
Name, Year, %score, trials
Player1 2000 55 1200
Player2 2001 61 1001
Player1 2002 54 978
Player6 2003 63 1034
Player5 2004 59 1132
.....
这个输出的SQL查询是什么?
我建议使用窗口函数:
select p.*
from (
select p.*, 100.0 * 3point_score / 3point_trials score_percent,
rank() over(partition by year order by 100.0 * 3point_score / 3point_trials desc, 3point_trials desc) rn
from players p
) p
where rn = 1
order by year, rn