利用rank()over(partition by order by)实现排名每个店铺中的销量前十的产品

在spark-sql实现排名每个店铺中的销量前十的商品

这里主要用到的是窗体函数:rank()over(partition by 分区值 order by 排序值 DESC/ASC)

DESC 表示降序
ASC 表示升序
特别注意:写sql时,变量名建议用英文

具体案例

第一步 :先进行子查询,

select 店铺名称,商品名称,sum(销量)as 销量  from 销量表 group by 店铺名称,商品名称;

第二步:嵌套查询+窗体函数排序

select 店铺名称,商品名称 from(
select 店铺名称,商品名称,rank()over(partition by 店铺名称 order by 销量 desc )as 排序 from(
select 店铺名称,商品名称,sum(销量)as 销量 
from 销量表 group by 店铺名称,商品名称
)
)where 排序<=10;
排序<=10 代表销量前十,如果小于<=3 ,那就是每个店铺销量的的前3名。
随笔结束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章