php - 高分 - 用户的最佳时间段

标签 php mysql sql mariadb

我有一个表来跟踪游戏数据,以下是该表的示例:

id | player_name | date                | score | kills
1  | test1       | 2013-01-01 00:00:00 | 10000 | 200
2  | test1       | 2013-01-01 00:01:00 | 12000 | 300

我有一个玩家排行榜,它对在特定时间段内获得最多得分/击杀等的人进行排名。目前我只得到了它,以便它对过去 24 小时内的玩家进行排名。我这样做的方法是选择指定时间段内的第一条和最后一条记录,然后减去它们以获得差异。

这是我当前的查询:

SELECT  date, score FROM datapoints WHERE player_name = :player AND date = (SELECT MIN(date) FROM datapoints WHERE player_name = :player AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR))
UNION ALL 
SELECT date, score FROM datapoints WHERE player_name = :player AND date =  (SELECT MAX(date) FROM datapoints WHERE player_name = :player AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR))

减去后,我使用 PHP arsort() 函数对它们进行排序,然后将它们显示在页面上。

但是,我想添加另一个功能。我希望能够看到哪一天是用户得分/击杀数最好的一天。

我一直在考虑如何做到这一点,其中之一是使用上面的查询,但每天都有一个循环并取出最好的一天,但这可能不是很有效,我想知道,如果有更好的方法吗?

最佳答案

以下是获取任意给定日历日发生的分数变化和击杀数的方法:

select date(date) as thedate, max(score) - min(score) as DayScore,
       max(kills) - min(kills) as DayKills
from datapoints dp
where player_name = :player
group by date(date);

例如,要获取分数的最高日期,您可以添加 order bylimit 子句,如下所示:

order by DayScore desc
limit 1;

关于php - 高分 - 用户的最佳时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905420/

相关文章:

javascript - Nodejs 读取数据库查询会引发单个字段错误

php - 由于小的 JOIN/WHERE 过滤器,PostgreSQL Select 语句非常慢

MYSQL CASE 语句(if/else)

sql - JOIN 和 UNION 有什么区别?

python - 来自 mssql 数据库的 sqlalchemy 映射表,值为 "prefix-namespaces"

php - SQL 中的博客搜索在搜索中添加标签

JAVASCRIPT:切换内切换不起作用问题

javascript - 如何在 php 中从 javascript 解码序列化 url

php - 如何将点击的类别名称分配给变量?

mysql - 将可变数量的参数传递给 sql 查询