【sql:练习题16】查询学生的总成绩,并进行排名

题目:查询学生的总成绩,并进行排名,总分重复时不保留名次空缺

分析:查询学生的总成绩 并进行排序 写这个sql 简单,直接按照学生student分组  然后sum(成绩 score)

SELECT studentid,SUM(score) AS a FROM student_score GROUP BY studentid ORDER BY a DESC

但是这样实现了排序 ,但是怎么给个序号rank 来表示排名吶?

于是就引用变量

SET @crank =0;
SELECT b.studentid, b.a, @crank := @crank +1 AS rank FROM
 (SELECT studentid,SUM(score) AS a FROM student_score GROUP BY studentid ORDER BY a DESC)b ;

 

 

这里有用到变量:SET @crank =0;

我百度了下sql变量: 之前没接触过

自定义变量: 申明变量:SET @crank =0对变量进行赋值:@crank := @crank +1   ,赋值操作符   =或:=   使用:查找,比较  运算等  ,      作用域:针对于当前会话(连接)有效,作用域同于会话变量

 

 

猜你喜欢

转载自www.cnblogs.com/yuanyuan2017/p/11363811.html
0条评论
添加一条新回复