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

Jul*_*okk 1 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  
Run Code Online (Sandbox Code Playgroud)

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

所以对于eaxmple,如果玩家约翰在2001-06-10打了十轮我想要显示当天的最佳成绩,以此类推其他球员.

非常感谢你的时间.

sti*_*vlo 5

SELECT name, MAX(score) AS hiscore, DATE(datestamp) AS sdate
FROM scores
GROUP BY userid, sdate
ORDER BY sdate DESC
Run Code Online (Sandbox Code Playgroud)

但是请注意,您的表格甚至不是第一个正常形式,因为它缺少唯一键.在修复之后,将重复播放器的名称,并且必须在单独的表格中提取第二范式.

规范化设计将有两个表:

player(userid, name)
scores(scoreid, userid, score, datestamp)
Run Code Online (Sandbox Code Playgroud)