我真的不知道该怎么称呼这个问题,所以这是我最好的猜测。mysql order by multiple occurence
这是我的问题。我有一个表,看起来像这样:
Structure
__________________
problemID | actualDifficulty | personID | userDifficulty
Rows
__________________
39414 | 5 | 100001| 1
39414 | 5 | 100000| 1
39411 | 5 | 100000| 3
39411 | 5 | 100001| 3
39416 | 4 | 100001| 4
39413 | 3 | 100001| 3
39415 | 1 | 100001| 1
39412 | 1 | 100001| 1
39412 | 1 | 100000| 1
因此,有为数众多的有1 - 易分至5硬盘有一定的难度不同的“问题”。上面的表格是每个用户都在解决问题并说他们解决问题的难度。
我想要的是得到一个“前50名”的名单,它将根据几件事情排名每个人。
- 某人解决了难度为5的问题总是排名高于没有问题的人。即使其他人已经解决了难度为4的100个问题
- 如果两个人解决了难度为5的同样数量的问题,则其转到
userDifficulty
列,以便如果一个用户说它是1难度对他们来说,他们的排名会高于排名相同的问题,因此他们的排名将会高于那些解决了难度为4的最多问题的人......然后解决这个问题最简单。 ..然后谁解决了最多的3 ... ...并解决它们最简单
获取想法?均田?
这里是我迄今为止
SELECT COUNT(*) , personID
FROM table
WHERE actualDifficulty =5
GROUP BY personID
ORDER BY userDifficulty ASC
LIMIT 0 , 50
任何帮助吗?
感谢兄弟。你今天为我节省了很多时间。 – krummens
你能解释第二个例子好一点吗? – krummens