首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sql打分

如何使用sql打分
EN

Stack Overflow用户
提问于 2018-10-22 09:44:52
回答 1查看 893关注 0票数 1

我一直试图对数据库中的一些分数进行排序,但是输出是错误的。我以前做过这件事,但我忘记了我是怎么做的。

sql

代码语言:javascript
复制
 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是因为我希望能够在相同的类和会话中选择一些数据,然后对总分进行排序,我希望最高的是第一。希望说得通,

我得到的数据非常大,我只想选择学生的班级,学术会议或其他什么,他们的总分和排名。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 10:49:04

在较早版本的MySQL中,我建议使用变量:

代码语言:javascript
复制
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+中,您可以这样做:

代码语言:javascript
复制
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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52926416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档