SQL案例分析:畅销商品分析

303 阅读1分钟

1.问题描述

商家卖货记录表t5包含一下字段

  • 卖家id:seller_id
  • 买家id:buyer_id
  • 物品id:item_id
  • 物品数量:num

要求计算每个卖家销量最高的商品,输出信息包含一项内容:卖家id、物品id、物品总销量。

2.初始化脚本

 -- 初始化t5
 create table t5(seller_id int,buyer_id int,item_id int ,num int );
 insert into t5 values(1,11,1,100),(1,12,1,200),(1,12,2,300);
 insert into t5 values(2,11,3,100),(2,12,4,200);

3.思路分析

1.首先我们可以查询出每个商家每个物品的总销量。

 select seller_id,buyer_id, sum(num) as total  from t5  group by  seller_id,item_id;

得到如下结果:

2022-05-24 1.png

2.基于上述结果来计算商家卖的物品的排名,这里我使用rank()来计算排名。

select seller_id,buyer_id, total ,rank() over(partition by seller_id order by total desc) as rk 
from (select seller_id,buyer_id, sum(num)as total  from t5  group by  seller_id,item_id ) s;

得到如下结果:

屏幕截图 2022-05-24 2.png

3.所以最畅销的产品的条件就是rk=1。

select seller_id,buyer_id,total
from(select seller_id,buyer_id, total ,rank() over(partition by seller_id order by total desc) as rk 
from (select seller_id,buyer_id, sum(num)as total  from t5  group by  seller_id,item_id ) s) t
where t.rk=1;

得到如下结果:

屏幕截图 2022-05-24 3.png