【问题标题】:How to perform the same query result as the actual stats如何执行与实际统计信息相同的查询结果
【发布时间】:2020-06-30 18:54:24
【问题描述】:

我设计了一个板球锦标赛数据库,其中收集了所有实时数据并尝试执行以下查询。

我正在尝试执行一个查询,该查询将显示与官方网站上的实际统计数据完全相同的结果,如图所示。

我想要实现的目标 - 我希望查询显示在整个锦标赛中一局中得分最多的得分,如图所示。请看https://stats.espncricinfo.com/ci/engine/records/batting/most_runs_innings.html?id=13202;type=tournament

问题 - 有一些球员在比赛中得分最多的球员不止一次,但是,由于我的查询,它只会显示该球员一次。例如,M Labuschagne 和 D Warner 不止一次出现。这是因为我正在使用 GROUP BY 玩家的姓名,但我不确定如何修改查询以使姓名显示不止一次。请看附图。

Most runs made in one innings

使用的代码:

SELECT p.name, innings, MAX(runs) AS max_runs
FROM testruns
JOIN players AS p
ON testruns.player_id = p.id
WHERE runs IS NOT NULL
GROUP BY p.name, innings
ORDER BY max_runs DESC
LIMIT 50

创建的表格:比赛、裁判、检票口、球员、角色、场地、团队、试运行

My testruns table

我对 SQL 很陌生。

【问题讨论】:

  • 请阅读this,了解一些改进问题的技巧。

标签: sql postgresql join group-by


【解决方案1】:

您的group by p.name, innings 使p.name 的行独一无二,我假设玩家在任何特定游戏中玩的innings 的数量(请原谅我的无知,因为我们不知道美国的板球运动) .

由于您列出的网站包含有关比赛的信息,这告诉我您应该改用group by <matchid>, p.name, innings

【讨论】:

  • 嗨,迈克,非常感谢您的回复。我可以确认,我已经解决了。我基本上也必须对 match_id 进行分组,这样它才能为您提供每场比赛中的所有最大跑数。
猜你喜欢
  • 2015-06-01
  • 2011-01-15
  • 1970-01-01
  • 2016-09-01
  • 2013-08-13
  • 1970-01-01
  • 2019-11-30
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多