假设我们有如下表格
id | name | userid | score | datestamp |
------------------------------------------------------------
1 | john | 1 | 44 | 2013-06-10 14:25:55
2 | mary | 2 | 59 | 2013-06-10 09:25:51
3 | john | 1 | 38 | 2013-06-10 21:25:15
4 | elvis | 3 | 19 | 2013-06-10 07:25:18
5 | john | 1 | 100 | 2013-06-14 07:25:18
我想选择每个用户的历史最高分。
例如,如果玩家 john 在 2013 年 6 月 10 日打了十轮比赛,他当天的总得分是 430。而在2013-06-14他打了16轮,当天他的总成绩是1220。我想为其他玩家显示用户 john 等的最好成绩。在上面的示例中,约翰的最佳成绩是 2013 年 6 月 14 日,得分为 1220。
详细示例: 如果用户 John 在 2013-06-10 玩了 3 轮。第一轮44分,第二轮38分,第三轮55分,当天总分137分,第二天2013-06-11打了5轮,总分220分。例如他目前最好的总分是 220。所以它应该将每天的所有分数组合到一个总分中。然后将此总计与其他天的总计进行比较,并显示该用户的最高总计
提前致谢
最佳答案
这应该可以解决问题:
SELECT userId, name, MAX(score) as highScore
FROM (
SELECT userID, name, SUM(score) as score, date(datestamp) as scoreDate
FROM TableName
GROUP BY userID, scoreDate
) dailyScores
GROUP BY userId
内部查询获取每个用户在每个日期的总分(时间戳转换为日期以去除时间信息),然后外部查询获取每个用户每个日期的最高总分。
我冒昧地以 J W 的 fiddle 为基础,并在您的示例数据中添加了另一行,因此功能显而易见,请在此处尝试: http://www.sqlfiddle.com/#!2/f6bea/3
关于php - MYSQL - 选择历史最高分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16076949/