SQL: выбрать максимальное значение из столбца вместе с соответствующей датой

Кто-нибудь знает, как я могу получить дату, которая соответствует максимальному количеству очков за game_id, за уровень, пожалуйста:

----------------------------------------
|id |game_id |level |score |date       |
----------------------------------------
|1  |0       |1     |90    |1391989720 |
|1  |0       |1     |95    |1391989721 |
|1  |1       |1     |4     |1391989722 |
|1  |1       |1     |8     |1391989723 |
|1  |1       |2     |6     |1391989724 |
----------------------------------------

Спасибо, ребята, должны были проверить соответствующие комментарии. Этот запрос работает:

    SELECT cdu_user_progress.game_id, 
           cdu_user_progress.level, 
           max_score, 
           cdu_user_progress.date 
    FROM 
    (
        SELECT game_id, level, MAX(score) AS max_score
        FROM cdu_user_progress 
        GROUP BY game_id, level 
    ) AS ms 
    JOIN cdu_user_progress ON cdu_user_progress.game_id = ms.game_id AND 
                              cdu_user_progress.level = ms.level AND 
                              cdu_user_progress.score = ms.max_score 

А что если я также хочу получить счет для ПЕРВОГО game_id (за уровень) и его дату, чтобы получить этот вывод:

-----------------------------------------------------------------
|game_id |level |max_score |max_date   |first_score |first_date |
-----------------------------------------------------------------
|0       |1     |95        |1391989721 |90          |1391989720 |
|1       |1     |8         |1391989723 |4           |1391989722 | 
|1       |2     |6         |1391989724 |6           |1391989724 |
-----------------------------------------------------------------

Спасибо!

1 ответ

Поскольку это mysql, вы можете просто сделать это, чтобы получить всю строку с наибольшим количеством очков за игру:

select * from (
  select *
  from cdu_user_progress
  order by score desc) x
group by game_id

Это работает из-за нестандартной групповой функциональности mysql, в результате чего возвращается первая строка, встреченная для каждой группы, когда не все неагрегированные столбцы названы в предложении group by.

Другие вопросы по тегам