sql - SQL 查询以获取每年表现最佳的统计数据(例如 3 个指针)
问题描述
我有一张桌子,上面有每年的球员和一些统计数据。例如(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 查询是什么?
解决方案
我会推荐窗口功能:
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
推荐阅读
- c - 在 C 中使用 fread() 的预期参数声明错误
- python - 如何在 Python 中创建 Makefile
- reactjs - 使用 i18n 实例时出现 i18n missingKey 问题
- javascript - 最大内容绘制 (LCP) 小于第一个内容绘制 (FCP)
- angular - ng 构建文件上的 Angular 库不包含在 dist 文件夹中
- c# - 在 SOAP 响应中返回多个元素
- flutter - Flutter 的 google_sign_in 包是否包含检索用户名字和姓氏的方法?
- windows - 命令提示符(Windows 10)在最小化/单击任务之外的任何位置时冻结/停止任务
- javascript - 在 google maps api 中添加图层和样式
- python - 熊猫与一组滚动 groupby