php - Mysql查询到平均时间

标签 php mysql sql time average

我玩了很多棋盘游戏,我维护着一个网站/数据库来跟踪一些统计数据。其中一张表跟踪不同的时间。它的结构如下所示:

  • gameName(文本 - 棋盘游戏的名称)
  • numPeople(整数 - 玩过的人数)
  • timeArrived(时间戳 - 我们到达正在玩游戏的房子的时间)
  • beginSetup(时间戳 - 我们开始设置游戏的时间)
  • startPlay(时间戳 - 我们实际开始玩游戏的时间)
  • gameEnd(时间戳 - 游戏结束的时间)

基本上,我想做的是利用这些时间从中获取一些有趣/有用的信息(比如平均什么游戏需要最长的设置时间,什么游戏平均需要最长的时间玩,什么游戏是从到达到完成的时间最长,等等...)通常,我太依赖 PHP,我只会做一个选择 * ... 并捕获所有时间,然后做一些 PHP 计算以找到所有统计数据,但我知道MySQL 可以通过查询为我完成所有这些工作。不幸的是,当涉及到更复杂的查询时,我会迷失方向,所以我需要一些帮助。

我想要几个查询的一些示例,希望一旦有人帮助我开始,我就能找出其他平均时间查询。平均玩棋盘游戏时间最长的查询是什么样的?平均最快的游戏/时间设置如何?

附加信息: drew010 - 你让我有了一个良好的开端,但我没有得到我预期的结果。我给你一些真实的例子... 我有一个名为 Harper 的游戏,它已经玩了两次(所以数据库中有两条记录,时间完整)。这是它的时代:

beginSetup(1) = 2012-07-25 12:06:03
startPlay(1) = 2012-07-25 12:47:14
gameEnd(1) = 2012-07-25 13:29:45

beginSetup(2) = 2012-08-01 12:06:30
startPlay(2) = 2012-08-01 12:55:00
gameEnd(2) = 2012-08-01 13:40:32

然后,当我运行您提供给我的查询(并将秒数转换为小时/分钟/秒)时,我得到了这些结果(抱歉,我不知道如何制作您制作的漂亮表格):

gameName = Harper
Total Time = 03:34:32
...and other incorrect numbers.

根据数字,平均总时间应该大约为 1 小时 24 分钟,而不是 3 小时 34 分钟。知道为什么我会得到不正确的数字吗?

最佳答案

这是一个获取每场比赛的平均准备时间和比赛时间的查询,希望对您有所帮助:

SELECT
  gameName,
  AVG(UNIX_TIMESTAMP(startPlay) - UNIX_TIMESTAMP(beginSetup)) AS setupTime,
  AVG(UNIX_TIMESTAMP(gameEnd) - UNIX_TIMESTAMP(startPlay)) AS gameTime,
  AVG(UNIX_TIMESTAMP(gameEnd) - UNIX_TIMESTAMP(beginSetup)) AS totalTime,
FROM `table`
GROUP BY gameName
ORDER BY totalTime DESC;

应该产生类似于以下的结果:

+----------+-----------+-----------+-----------+
| gameName | setupTime | gameTime  | totalTime |
+----------+-----------+-----------+-----------+
| chess    | 1100.0000 | 1250.0000 | 2350.0000 |
| checkers |  466.6667 |  100.5000 |  933.3333 |
+----------+-----------+-----------+-----------+

我刚刚插入了大约 8 个带有一些随机数据的测试行,所以我的数字没有意义,但这就是你会得到的结果。

请注意,这将扫描您的整个表格,因此可能需要一段时间,具体取决于您在该表格中有多少条记录。如果您有大量的游戏记录,这绝对是您希望定期在后台运行的东西。

关于php - Mysql查询到平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766987/

相关文章:

PHP MySQL简单任务管理系统带消息如何通知新消息?

javascript - 将 Hostinger DB 与 Node.js 连接

mysql : How to obtain the list of product id's with two different conditions?

c# - Dapper 可以用来更新和插入模型吗?

php - 如何在 PHP 中将时间(mktime)转换为日期(mm/dd/yyyy)?

php - Laravel 6,MYSQL - 如何使用 Laravel Querybuilder 或 Model Eloquent 通过 GroupBY 左连接子查询?

php - 如何为 PHP cms 创建注册表?

mysql - 分区将如何影响我当前在 MySQL 中的查询?什么时候对我的表进行分区?

mysql - 如何使用 mysql 将具有 INT 数据类型的列添加到已创建的表中

mysql - 获取企业架构数据库的 SQL 查询