以下背景:我有一个数据库,里面有我们NBA 2K在线联盟比赛中球员的单场比赛统计数据。因此,每个游戏的每个玩家都有一个条目。这些单场比赛的统计数据放在一起显示赛季平均水平。如果一个球员在一个赛季中为多支球队效力,理想情况下应该显示他在本赛季最后效力的球队,但对于我的查询,它可能会显示错误的球队。
表:gamestats_players行:playerID、gameID、赛季、日期、球队、积分(以及多个其他统计数据)
这是我使用的查询:
SELECT playerID, season, team, sum(pts)
FROM gamestats_players
GROUP BY playerID, season
ORDER BY date desc
一名球员有2个进入A队,他第一次参加比赛,1个进入B队,他最近被交易到那里。查询结果仍然显示Team A,据我所知,如果在GROUP BY期间合并的行有多个值,则只选择一个随机值。我如何才能在小组中通过他为所显示的团队选择最新的条目而不仅仅是任何条目来实现这一点?
数据库条目:
Gamestats_玩家
| 游戏ID|玩家ID|团队介绍|季节|日期|点数|
| --------------|--------------|--------------|--------------|--------------|--------------|
| 1|1|A组|三十六|2023-04-01 2023-04-01|10个|
| 二|1|A组|三十六|2023-04-02 2023-04-02|10个|
| 三|1|B队|三十六|2023-04-03 2023-04-03|10个|
查询结果
| 玩家ID|团队介绍|季节|和(点)|
| --------------|--------------|--------------|--------------|
| 1|A队 *|三十六|三十|
- 应该是B队
2条答案
按热度按时间wnavrhmk1#
首先,我们使用以下方法获取最新日期:
结果:
然后我们使用
inner join
将它与表连接,如下所示:结果:
Demo here
pjngdqdw2#
你可以使用窗口函数对每个球员在给定赛季的球队进行排名,然后进行聚合: