以下背景:我有一个数据库,其中包含我们NBA 2k在线联赛中球员的单场比赛统计数据。因此,每场比赛每个玩家都有一个条目。这些单场比赛的统计数据放在一起显示了赛季平均水平。如果一名球员在一个赛季为多支球队效力,理想情况下应该显示他在该赛季最后一次效力的球队,但根据我的查询,它可能会显示错误的球队。
表:gamestats_players 行:playerID, gameID, season, date, team, points (and multiple other statistics)
这是我使用的查询:
SELECT playerID, season, team, sum(pts)
FROM gamestats_players
GROUP BY playerID, season
ORDER BY date desc
一名球员有 2 次参加他第一次参加的 A 队和 1 次参加他最近被交易到的 B 队。查询结果仍然显示团队 A,据我所知,如果在 GROUP BY 期间合并的行有多个值,则只选择一个随机值。我怎样才能在小组中通过他为显示的团队选择最新的参赛作品而不仅仅是任何参赛作品来实现这一目标?
数据库条目:
gamestats_players
游戏ID | 玩家ID | 团队 | 季节 | 日期 | 积分 |
---|---|---|---|---|---|
1 | 1 | A队 | 36 | 2023-04-01 | 10 |
2 | 1 | A队 | 36 | 2023-04-02 | 10 |
3 | 1 | B队 | 36 | 2023-04-03 | 10 |
查询结果 | 玩家ID | 团队 | 季节 | 总和(分) |
---|---|---|---|---|
1 | A队* | 36 | 30 |
*应该是B队
有人提出以下答案作为有效的问题编辑建议:
SELECT playerID, season, team, sum(pts) FROM gamestats_players AS g WHERE g.date = (SELECT max(date) 来自 gamestats_players WHERE playerID = g.playerID AND season = g.season) GROUP BY playerID, season ORDER BY date DESC;