mysql-計算排名


mysql計算排名,獲取行號rowno

學生成績表數據

SELECT * FROM table_score ORDER BY score DESC;

 

獲取某個學生成績排名並計算該學生和上一名學生成績差,是並列排名

SELECT *,
(SELECT count(DISTINCT score) FROM table_score AS b WHERE a.score<b.score)+1 AS rank, #獲取排名,並列
(SELECT b.score FROM table_score AS b WHERE b.score>a.score ORDER BY b.score LIMIT 1)-a.score AS subtract #獲取和上一名學生成績的差 
FROM table_score AS a WHERE a.s_id = 13; #獲取學生周一的成績排名和與上一名的成績差

 

獲取所有學生成績排名-並列排名

SELECT *,
(SELECT count(DISTINCT score) FROM table_score AS b WHERE a.score<b.score)+1 AS rank #獲取排名-並列
FROM table_score AS a ORDER BY rank; #獲取學生成績排名

 

獲取所有學生成績排名,不是並列排名。計算行號進行排名

復制代碼
SELECT a.*,
(@rowNum:=@rowNum+1) AS rank #計算行號 
FROM table_score AS a, (SELECT (@rowNum :=0) ) b ORDER BY a.score DESC;
復制代碼

 

 

參考:https://www.cnblogs.com/aeiou/p/5719396.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM