2011-05-18 49 views
0

如何获得有史以来最好的排名,考虑最佳时间和得分?假设用户赢得了几次,那么如何计算最佳用户赢得次数以及平均获胜时间是多少?如何使SQL查询排名?

+----------------+----------------+--------+-----------------------+ 
| 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 |    
+----------------+----------------+--------+-----------------------+ 
+0

开始时间在哪里? – manji 2011-05-18 23:08:23

+0

在测验桌上。 – luzny 2011-05-19 06:28:19

回答

1

为了获得最好的分数,考虑到最新的完成日期时间很容易。

总体

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 

我不知道你是什么以用户赢的数量来表示。什么意味着胜利?与平均时间相同;这里没有足够的信息来帮助你解决这两个问题。