MYSQL - выбрать максимальную оценку каждого игрока за каждый день - PullRequest
1 голос
/ 01 октября 2011

при условии, что у нас есть таблица, как показано ниже

  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  

Я хочу отображать рекорды каждого пользователя в каждый день.

Так, например, если игрок Джон сыграл десять раундов в 2001-06-10, я хочу показать лучший результат этого дня и так далее для остальных игроков.

Большое спасибо за то время.

Ответы [ 2 ]

5 голосов
/ 01 октября 2011
SELECT name, MAX(score) AS hiscore, DATE(datestamp) AS sdate
FROM scores
GROUP BY userid, sdate
ORDER BY sdate DESC

Но также обратите внимание, что ваша таблица даже не в первой нормальной форме , потому что в ней отсутствует уникальный ключ.Также после исправления этого, имя игроков будет повторяться, и его нужно будет извлечь в отдельную таблицу для второй нормальной формы.

Нормализованный дизайн будет иметь две таблицы:

player(userid, name)
scores(scoreid, userid, score, datestamp)
2 голосов
/ 01 октября 2011

Не проверено, а как же?

select userid, max(score), date(datestamp) from table
group by userid, date(datestamp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...