在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名。
随笔结束