SQL-запрос для получения списка рангов - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть таблица «табло» игры со следующим содержимым

+-----------+----------+--------+---------------------+
| Team_name | Level    | Status | completed_time      |
+-----------+----------+--------+---------------------+
| sample1   |        1 | yes    | 2011-09-11 15:15:44 |
| sample2   |        1 | yes    | 2011-09-11 15:48:13 |
| sample2   |        2 | yes    | 2011-09-11 15:50:13 |
| sample2   |        3 | yes    | 2011-09-11 15:52:13 |
| sample1   |        2 | yes    | 2011-09-11 15:16:52 |
| sample1   |        3 | yes    | 2011-09-11 15:31:06 |
| sample1   |        4 | yes    | 2011-09-11 15:31:47 |
| sample1   |        5 | no     | 2011-09-11 15:31:47 |
| sample2   |        4 | no     | 2011-09-11 15:52:13 |
| sample4   |        1 | yes    | 2011-09-12 17:11:51 |
| sample4   |        2 | yes    | 2011-09-12 17:12:18 |
| sample4   |        3 | yes    | 2011-09-12 17:16:53 |
| sample4   |        4 | yes    | 2011-09-13 22:58:24 |
| sample4   |        5 | yes    | 2011-09-14 03:03:21 |
| sc102     |        1 | yes    | 2011-09-14 01:42:20 |
| sc102     |        2 | no     | 2011-09-14 01:42:20 |
| sample4   |        6 | yes    | 2011-09-14 03:08:20 |
| sample4   |        7 | no     | 2011-09-14 03:08:20 |
| Javad     |        1 | yes    | 2011-09-14 21:07:05 |
| Javad     |        2 | yes    | 2011-09-14 21:08:47 |
| Javad     |        3 | yes    | 2011-09-14 21:18:40 |
| Javad     |        4 | yes    | 2011-09-14 21:25:12 |
| Javad     |        5 | yes    | 2011-09-14 21:34:25 |
| Javad     |        6 | yes    | 2011-09-14 21:41:33 |
| Javad     |        7 | yes    | 2011-09-14 21:47:31 |
| Javad     |        8 | yes    | 2011-09-14 21:48:15 |
| Javad     |        9 | yes    | 2011-09-14 21:48:25 |
| Javad     |       10 | yes    | 2011-09-14 21:49:07 |
| SCAV527   |        1 | yes    | 2011-12-05 21:15:30 |
| SCAV527   |        2 | yes    | 2011-12-05 21:20:30 |
| SCAV527   |        3 | yes    | 2011-12-05 21:20:46 |
| SCAV527   |        4 | no     | 2011-12-05 21:20:46 |
+-----------+----------+--------+---------------------+

Мне нужно подготовить список рейтингов игры, основанный на уровне, решенном командой, и времени его завершения.Если более чем одна команда решила уровень, приоритет отдается команде, которая решила в первую очередь на основе complete_time.И строка со статусом «нет» должна быть пропущена при подготовке списка рангов.

Вывод запроса должен иметь такие поля, как team_name, level, complete_time.

Не могли бы вы помочь мне написатьSQL-запрос для списка рангов?Я использую MySQL в качестве серверной части.

Вывод запроса должен быть таким.

+-----------+-----------+----------+---------------------+
| Rank      | Team_name | Level    | completed_time      |
+-----------+-----------+----------+---------------------+
| 1         | Javad     |       10 | 2011-09-14 21:49:07 |
| 2         | sample4   |        6 | 2011-09-14 03:08:20 |
| 3         | sample1   |        4 | 2011-09-11 15:31:47 |
| 4         | SCAV527   |        3 | 2011-09-10 21:20:46 |
| 5         | sample2   |        3 | 2011-09-11 15:52:13 |
| 6         | sc102     |        1 | 2011-09-14 01:42:20 |
+-----------+-----------+----------+---------------------+

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011
SELECT @rank:=@rank+1 as rank, r.*
FROM (
    SELECT team_name, MAX(level) as level, MAX(completed_time) as completed_time
    FROM results
    WHERE `status` = 'yes'
    GROUP BY team_name
    ORDER BY 2 DESC) as r, (SELECT @rank:=0) as init
0 голосов
/ 16 декабря 2011

Подобное может помочь:

SELECT v1.Team_name, v1.Level , COUNT(v2.Level) AS Rank
FROM scoreboard v1
JOIN scoreboard v2 ON v1.Level  < v2.Level  OR (v1.Level =v2.Level  and v1.Team_name = v2.Team_name)
WHERE v1.status = "yes"
GROUP BY v1.Team_name, v1.Level 
ORDER BY v1.Level  DESC, v1.Team_name DESC; 
...