MYSQL - 选择每个玩家每天的最高分数

时间:2011-10-01 16:17:23

标签: mysql group-by max

假设我们有一个如下表

  name   |  userid  |  score  |      datestamp      |
-----------------------------------------------------
  john   |    1     |   44    |  2011-06-10 14:25:55 
  mary   |    2     |   59    |  2011-06-10 09:25:51 
  john   |    1     |   38    |  2011-06-10 21:25:15 
  elvis  |    3     |   19    |  2011-06-10 07:25:18
  ...
  marco  |    4     |   100   |  2011-03-10 07:25:18  

我想在每一天显示每个用户的高分。

所以对于eaxmple,如果玩家约翰在2001-06-10打了十轮,我想显示那天的最佳分数,以及其他玩家的等等。

非常感谢您的时间。

2 个答案:

答案 0 :(得分:5)

SELECT name, MAX(score) AS hiscore, DATE(datestamp) AS sdate
FROM scores
GROUP BY userid, sdate
ORDER BY sdate DESC

但请注意,您的表格甚至不在first normal form中,因为它缺少唯一键。在修复之后,将重复播放器的名称,并且必须在另一个表格中提取第二个普通表格。

规范化设计将有两个表:

player(userid, name)
scores(scoreid, userid, score, datestamp)

答案 1 :(得分:2)

未经测试,但是怎么样?

select userid, max(score), date(datestamp) from table
group by userid, date(datestamp)