比如有一个学生成绩表。张三 98 李四 78 赵六 54,如何用sql语句进行排名。并给出名次
select name,score, row_number() over(partiition by name order by score desc) as rank from t
先用成绩进行分组,然后按照成绩从高到低排序:
select t.name,t.score,count(1) from table t group by t.socre order by score desc;
参考自:
MySQL如何优化GROUP BY http://www.data.5helpyou.com/article237.html
SELECT b.NAME,b.score,IF(1=1,@rank:=@rank+1,@rank:=1) AS rankFROM (SELECT NAME,score FROM tableORDER BY score DESC ) b,(SELECT @id := NULL ,@rank:=0) a
SELECT @rownum:=@rownum+1 AS rownum, t.name,t.score from (SELECT @rownum:=0) r , table t
select name from student order by math; //排序mysql 语句
select name from student order by math desc; // desc 倒序排列
谢谢各位,我再整理下思路,明天跟各位交流我不懂的地方
目前采纳了阿彭鹏鹏的做法,出现的这个效果,还需要修改
这回对劲了。谢谢各位*