当前位置: 移动技术网 > 科技>操作系统>windows > 分组排序函数——row_number()

分组排序函数——row_number()

2019年11月30日  | 移动技术网科技  | 我要评论

everest ultimate edition,粉丝网,汇空包

1、mysql8.0以上版本

用法1:无分组排序

row_number() over(order by 字段 desc)
例如:row_number() over(order by 学生成绩 desc)
表示不分班级,所有学生的成绩从高到低排序
用法2:分组排序
row_number() over(partition by 字段1 order by 字段2 desc)
表示根据字段1分组,在分组内部根据字段2排序,这个函数计算的值就表示每组内部排序后的顺序编号
例如:row_number() over(partition by 班级 order by 学生成绩 desc)
表示根据“班级”分组,在每个“班级”内部根据“学生成绩”排序,这个函数计算的值就表示每组内部排序后的
顺序编号
解释:
row_number( )  起到了编号的功能
partition by  将相同数据进行分区
order by    使得数据按一定顺序排序

2、mysql5.7版本

用法1:无分组排序

例如:计算销售人员的销售额,结果按从高到低排序,查询结果中要包含销售的排名

set @rank := 0;
select
a.*,
@rank := @rank + 1 as rank 
from
( select sales_name, sum( sales ) from spm_order

group by sales_name

order by sum( sales ) desc ) a

用法2:分组排序

例:计算销售人员在不同城市的销售额;

要求:结果根据销售人员不同城市的销售额进行分组排序(降序),并且查询结果要包含分组排名

set @r := 0,
@type := '';
select
 @r :=
case when @type = a.sales_name then
@r + 1 else 1
end as rownum,
 @type := a.sales_name as type,
  a.*
from
( select sales_name, city, sum( sales ) from spm_order

group by sales_name, city

order by sales_name, sum( sales ) desc ) a;

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网