mysql排名,分组排名,行号
基本知识:
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
相关文章
- 实施固定资产管理系统对企业有什么好处?
- 【Win 10应用开发】响应系统回退键的导航事件
- 编写Windows服务疑问2:探索服务与安装器的关系
- 机器人相关学术速递[11.24]
- OpenCV + OpenVINO实现人脸AR – 请戴上口罩
- 编写Windows服务疑问1:操作过程
- VS 2015相当不错的功能:C#交互窗口
- 用AI帮助销售主管及时识别成单障碍,有效做好成单指导
- OpenCV+MediaPipe五分钟搞定人脸3D点云提取
- Wi-Fi相关名词解释
- 细谈企业网络安全中堡垒机绕过问题
- 干货 | 信息搜集的那些资源们(建议收藏)
- 【Win 10应用开发】延迟加载图片的另一种方法
- 跟着老猫来搞GO-容器(一)
- 如何针对网站CDN的识别和绕过?
- 【Win 10应用开发】提供建议列表的输入控件(AutoSuggestBox)
- OpenCV + MediaPipe实现眼睛虹膜检测
- Graylog4.2+GeoIP2获取SSH暴力破解攻击者IP的地理位置信息
- 【Win 10应用开发】在RichEditBox中使用自定义菜单
- 简单的DC-6靶机渗透实战