我被困在试图找出一种方法来分配基于两个值的排名。我的表如下:基于两列的Mysql排名
---------------------------------------
| id | Student | Tasks | Errors | Rank |
---------------------------------------
| 1 | Vegeta | 80 | 1500 | 18.7 |
---------------------------------------
| 2 | Ria | 100 | 150 | 1.5 |
---------------------------------------
| 3 | John | 200 | 300 | 1.5 |
---------------------------------------
| 4 | Goku | 24 | 100 | 4.16 |
---------------------------------------
| 5 | Piccolo | 80 | 148 | 1.85 |
---------------------------------------
排名值计算将错误/任务,所以我可以有最好的学生的想法,但是,约翰和RIA具有相同的排名却约翰是一个更好的学生,如他做得比利雅更多的任务,所以我需要他指派等级1 - RIA将等级2 - 短笛等级3 - 悟空等级4和贝吉塔排名5.
我试图
SELECT * from students ORDER BY Task DESC, Errors ASC
但只按Task
排序,它似乎忽略第二个值,排序rank
会好的,但那我该如何分配正确的订单?
要分配的新rank
应该基于最大任务数量。最少的错误数量,因此具有更多任务和更少错误的学生应该位于第1位,依此类推。
要如何计算的排名目前尚不清楚。请包括预期的输出。您的示例查询的行为与预期相同。 –
嘿蒂姆,排名将是更多的任务与更少的错误,而更多的任务和更少的错误用户有更高的排名。 – Aramil