Как сделать ранжирование SQL-запросов? - PullRequest
0 голосов
/ 19 мая 2011

Как получить рейтинг лучших из лучших, учитывая лучшее время и счет? Предполагая, что пользователь выиграл несколько раз, как посчитать, сколько раз выиграл лучший пользователь и каково среднее время этого выигрыша?

+----------------+----------------+--------+-----------------------+
| user_id        | quiz_id        | score  | finish                |
+----------------+----------------+--------+-----------------------+
| 1              | 1              | 1      | 2011-05-18 21:39:00   |
| 2              | 1              | 1      | 2011-05-18 21:43:10   |
| 3              | 1              | 0      | 2011-05-18 21:40:55   |
| 1              | 2              | 1      | 2011-05-18 22:51:57   |
| 2              | 2              | 1      | 2011-05-18 22:21:37   |
| 3              | 2              | 0      | 2011-05-18 22:22:48   |
| 4              | 2              | 1      | 2011-05-18 22:58:14   |              
+----------------+----------------+--------+-----------------------+

1 Ответ

1 голос
/ 19 мая 2011

Получить лучший результат с учетом даты последнего финиша довольно просто.

В целом

SELECT user_id, quiz_id, score, finish
FROM table
ORDER BY score DESC, finish DESC
LIMIT 1

Для каждого теста

SELECT user_id, quiz_id, score, finish
FROM table
GROUP BY quiz_id
ORDER BY score DESC, finish DESC

для каждого пользователя

SELECT user_id, quiz_id, score, finish
FROM table
GROUP BY user_id
ORDER BY score DESC, finish DESC

Я не уверен, что вы подразумеваете под количеством побед пользователей. Что означает победу? То же самое со средним временем; здесь недостаточно информации, чтобы помочь вам с этими двумя вопросами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...