【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 ,赋值操作符 =或:= 使用:查找,比较 运算等 , 作用域:针对于当前会话(连接)有效,作用域同于会话变量