題目:查詢學生的總成績,並進行排名,總分重復時不保留名次空缺
分析:查詢學生的總成績 並進行排序 寫這個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 ,賦值操作符 =或:= 使用:查找,比較 運算等 , 作用域:針對於當前會話(連接)有效,作用域同於會話變量