利用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名。
隨筆結束

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