SQL 查询以获得每年最佳表现者统计数据(例如 3 个指针)
SQL query to get top performer statistics per year (eg 3 pointers)
我有一个 table 每年的球员和一些统计数据。
例如 (player_key, player_name, 年份, 3point_trials, 3point_score)
我希望将每年的最佳表现者作为输出 (3point_score/3point_trials)。如果他们中的两个有相同的百分比,那么盈亏平衡就是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 查询是什么?
我会推荐 window 函数:
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
我有一个 table 每年的球员和一些统计数据。 例如 (player_key, player_name, 年份, 3point_trials, 3point_score)
我希望将每年的最佳表现者作为输出 (3point_score/3point_trials)。如果他们中的两个有相同的百分比,那么盈亏平衡就是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 查询是什么?
我会推荐 window 函数:
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