zl程序教程

您现在的位置是:首页 >  其他

当前栏目

mysql排名,分组排名,行号

2023-04-18 15:49:32 时间

基本知识:
  1.sql语句中,使用@来定义一个变量。如:@rank
  2.sql语句中,使用:=来给变量赋值,:@rank:=123,则变量rank的值为123
  3.sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:
  4.@rank:= if(2>1,100,200)的结果是,rank的值为100。

行号

set @rownum:= 0;
select @rownum:=@rownum+1 as rownum,a.* from user_copy a;

 

行号
select score, @rk := @rk+1 as rank
from user_copy fans,(select @rk:=0) a order by score desc;

 

按分数排名
select class,score ,
if(@prerk = score,@rk,@rk:=@rk+1) as rank ,@prerk:=score
from user_copy ,(select @rk:=0,@prerk:=NULL) a order by score desc;

 

按课程 分数 排名 取第二名
select id,name,class,score from (
  select id,name,class,score,
  IF(@p=class,if(@prerk = score,@r,@r:=@r+1),@r:=1) AS rank, @p:=class ,@prerk:=score
  from user_copy , (SELECT @p:=NULL,@prerk:=NULL,@r:=1) a order by class
) a where rank = 2 order by class;

 

 

mysql 5.8以后支持窗口函数

1.聚合窗口函数
许多常见的聚合函数也可以作为窗口函数使用,包括AVG()、SUM()、COUNT()、MAX()以及MIN()等函数。

 

2.排名窗口函数
排名窗口函数用于对数据进行分组排名,包括ROW_NUMBER()、RANK()、DENSE_RANK()、PERCENT_RANK()、CUME_DIST()以及NTILE()等函数。

 

3.取值窗口函数
取值窗口函数用于返回指定位置上的数据行,包括FIRST_VALUE()、LAST_VALUE()、LAG()、LEAD()、NTH_VALUE()等函数。

原文链接:https://blog.csdn.net/liangmengbk/article/details/124253806