我有下表:
分数:
user_id | match_id | points
1 | 110 | 4
1 | 111 | 3
1 | 112 | 3
2 | 111 | 2
用户对比赛进行投注,并根据比赛结果获得积分。根据投注的准确性,一场比赛您将获得 0、2、3 或 4 分。
现在我想对用户进行排名,这样我就可以看到谁在第一、第二等等......排名顺序首先是按总点数。如果这些相等,则按用户获得 4 分的次数排序,然后按用户获得 3 分的次数排序,依此类推。
为此,我需要下表:
user_id | total_points | #_of_fours | #_of_threes | #_of_twos
1 | 10 | 1 | 2 | 0
2 | 2 | 0 | 0 | 1
但我无法弄清楚可以帮助我获得它的连接语句。
这是我在没有帮助的情况下得到的:
SELECT user_id, COUNT( points ) AS #_of_fours FROM scores WHERE points = 4 GROUP BY user_id
这导致
user_id | #_of_fours
1 | 1
2 | 0
现在我必须为#_of_threes 和twos 以及总分做这件事,然后把它们加在一起,但我不知道怎么做。
顺便说一句,我正在使用 MySQL。
任何帮助都会非常感激。提前致谢