如何根据MySql中的最高分数和最低分钟计算排名

时间:2015-07-09 08:53:16

标签: mysql

CREATE TABLE IF NOT EXISTS `teststatus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userid` int(11) DEFAULT NULL,
  `duration` varchar(45) DEFAULT NULL,
  `starttime` varchar(20) DEFAULT NULL,
  `endtime` varchar(20) DEFAULT NULL,
  `totaltime` varchar(70) DEFAULT NULL,
  `totaltime_minutes` varchar(70) DEFAULT NULL,
  `totalquestions` varchar(20) DEFAULT NULL,
  `correctlyanswered` int(11) DEFAULT NULL,
  `status` varchar(10) DEFAULT NULL,
  `totalmarks` int(11) DEFAULT NULL,
  `emailid` varchar(100) DEFAULT NULL,
  `requesttoken` varchar(100) DEFAULT NULL,  
  PRIMARY KEY (`id`)
) 

我试图执行此查询。

SELECT d.userid, d.totaltime, d.totalmarks, d.emailid, c.ranks
FROM
(
    SELECT totalmarks, @rank:=@rank+1 Ranks
    FROM
    (
        SELECT DISTINCT totalmarks
        FROM teststatus
        ORDER BY totalmarks DESC
    ) t,
    (
        SELECT @rank:= 0
    ) r
) c
INNER JOIN teststatus d
ON c.totalmarks = d.totalmarks
ORDER BY ranks;

但它显示基于总标记的排名,但我想要基于最大分数和较少的总时间排名。

我得到的结果:

totaltime,totalmarks,ranks
150,13,1
180,12,2
110,11,3
100,11,3
105,11,3
80,11,3
120,11,3
90,11,3
140,9,4
112,8,5
145,8,5
120,7,6
157,7,6
120,6,7

0 个答案:

没有答案