sql server中的row_number在mysql中如何实现

sql server中的row_number在mysql中如何实现

sql server中的row_number在mysql中如何实现

row_number是一个很好用的排序函数,在mysql中没有,通过其他方法将其在mysql中实现。

原始数据

原始数据图片
mysql的代码:
set @row=0;
set @mid=’’;
select a.goods_type,a.goods_name,a.price,
case
when rownum/num<0.2 then ‘低档’
when rownum/num>=0.2 and rownum/num<0.85 then ‘中档’
else ‘高档’ end
from (
select goods_type,goods_name,price,
case when @mid=goods_type then @row:=@row+1 else @row:=1 end rownum,@mid:=goods_type
from goods
order by goods_type,price
)a
join (
select goods_type,count(goods_name) as num
from goods
group by Goods_type
)b on a.goods_type=b.goods_type

实现结果:
实现结果
其实通过row_number更方便:
select Goods_type,goods_name,price
,case when rownum/num<0.2 then ‘低档’
when rownum/num>=0.2 and rownum/num<0.85 then ‘中档’
else ‘高档’ end
from(
select Goods_type,goods_name,price,row_number() over(partition by Goods_type order by price) rank
from goods a
join (
select Goods_type,count(goods_name) as num
from goods
group by Goods_type
)b on a.Goods_type=b.Goods_type
)c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值