SQL 查询以获取每年表现最佳的统计数据(例如 3 个指针)

Posted

技术标签:

【中文标题】SQL 查询以获取每年表现最佳的统计数据(例如 3 个指针)【英文标题】:SQL query to get top performer statistics per year (eg 3 pointers) 【发布时间】:2021-01-29 19:39:34 【问题描述】:

我有一张表格,里面有每年的球员和一些统计数据。 例如(player_key、player_name、year、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 查询是什么?

【问题讨论】:

【参考方案1】:

我会推荐窗口函数:

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

【讨论】:

@Serg:对!这 3 指针的事情让我很烦。 有效!有没有更简单的方法,只使用简单的函数,比如 group by、order by 和 limit?

以上是关于SQL 查询以获取每年表现最佳的统计数据(例如 3 个指针)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server - 查询以根据每年的最后一个值计算加权平均值

SQL WHERE 子句 - 显示每 3 年数据的最佳方式

查询数据库,分解日期以获取年份,并使用唯一年份填充下拉列表

读取 XML 数据并构建查询以将值插入 SQL Server DB 的最佳方法是啥?

SQL查询以获取具有不同时间戳的多行

查询数据库以获取附近纬度/经度的最佳方式?