【问题标题】:Create view from live stats从实时统计数据创建视图
【发布时间】:2020-12-16 23:30:09
【问题描述】:

我创建了一个系统来输入学校篮球比赛的结果。这个想法是,在游戏结束后,操作员将以系统获取的格式输入结果以保存在数据库中,格式如下:

日期 |团队 |得分 1Q |得分 2Q |得分 3Q |第四季度得分 |得分 OT |最终成绩 | W |大号 |赢得团队 |输给球队 |常规赛? |决赛?

我创建了一个 PHP 页面,该页面计算了上表中的许多统计数据,例如总获胜次数、获胜百分比、平均积分、平均。每节得分、半场或第 3 季度输球时的转机百分比、总决赛有争议的比赛百分比、时代成为冠军等,以及更多更深入的统计数据。

但我正在考虑使用在数据库上实时计算的这些信息创建一个视图,而不是让脚本处理它。

但是,当我们进行选择时,如何将所需的选择从第一个表转换为工作的第二个表,并完成所有计算?

谢谢

【问题讨论】:

  • 显示您的表格格式 show create table {tablename} 编辑到应用格式的问题中。您当前的脚本可以帮助量化您需要的结果,因此也请包括在内。
  • 您似乎将数据存储和检索问题与数据显示问题混淆了。数据库表不是电子表格。考虑修改您的架构。
  • 我知道不是。另一方面,据我了解,应用程序并不是制作所有这些的最佳场所。我看到人们对下面关于观点的答案投了反对票。那么有什么更好的方法呢?

标签: php mysql


【解决方案1】:

@decio,我认为您关于创建视图来计算这些统计数据的想法不是一个坏主意。您可以使用类似于以下 SQL 脚本的内容来执行此操作:

CREATE VIEW result_stats_view AS SELECT SUM(W) as total_wins, SUM(L) as total_losses FROM precalculate_stats_table_name;

这显示了本赛季的总输赢,但您可能明白这一点。在此处查看 MySQL 聚合函数(如平均值、求和等):

https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html

将计算添加到视图后,您可以像这样简单地进行查询以获取计算数据:

SELECT * from result_stats_view

【讨论】:

  • 谢谢,试试这个。我想使用的一些统计数据列实际上是对将在视图上计算的其他列进行计算,所以我不会对原始数据进行计算,而是对视图的先前列已经计算的内容进行计算。例如“在半场失利时转身比赛”。我想我需要先计算球队在半场比赛中输掉了多少场比赛,然后计算他们赢了多少场比赛,然后再计算百分比。我也可以按照您描述的方式执行此操作吗?
  • @decio 我相信这会奏效。您可能可以拥有多个视图来跟踪单独的计算。然后,您只需要在需要这些统计信息时对所需的任何视图进行简单查询,只要您存储游戏运营商添加的统计信息的原始表在一半时间是最新的(基于你给出的例子)。
  • @decio 因此,如果我了解您在做什么,用户(游戏运营商)将转到您在 PHP 中创建的页面,并将数据输入到您需要跟踪游戏的字段中那里?那么在输入数据并保存到数据库表之后,就是你要执行计算的时候了?
  • 谢谢@finiteloop。是的。我的意思是实时是因为人们正在玩游戏,因为人们将访问网站上的统计页面,所以刚刚完成的游戏会更新球队和球员的统计数据。但它不需要实时跟踪特定游戏的统计数据。
  • 另外,我正在将其作为一个副项目进行工作,因此可能只能在本周末进行测试。但会带着结果回来这里。
猜你喜欢
  • 2018-04-19
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多