我一直试图对数据库中的一些分数进行排序,但是输出是错误的。我以前做过这件事,但我忘记了我是怎么做的。
sql
SELECT `total_score`, FIND_IN_SET( `total_score`, (
SELECT GROUP_CONCAT( DISTINCT `total`
ORDER BY `total_score` DESC ) FROM `table` WHERE `class`="class" AND `session`="2018/2019")
) AS rank
FROM `table` WHERE `class`="class" AND `session`="2018/2019";这是目前正在处理的数据。

输出

从输出上看,得分最高的是得分最低的。我使用group_concat是因为我希望能够在相同的类和会话中选择一些数据,然后对总分进行排序,我希望最高的是第一。希望说得通,。
我得到的数据非常大,我只想选择学生的班级,学术会议或其他什么,他们的总分和排名。
发布于 2018-10-22 10:49:04
在较早版本的MySQL中,我建议使用变量:
SELECT total, (@rank := @rank + 1) as rank
FROM (SELECT DISTINCT CASTt.total + 0 as total
FROM `table` t
WHERE class = 'class' AND session = '2018/2019'
ORDER BY total ASC
) t CROSS JOIN
(SELECT @rank := 0) params;在MySQL 8+中,您可以这样做:
SELECT DISTINCT t.total, DENSE_RANK() OVER (ORDER BY total + 0 ASC) as the_rank
FROM `table` t
WHERE class = 'class' AND session = '2018/2019'https://stackoverflow.com/questions/52926416
复制相似问题