感觉自己再次写复杂了。
思路如下:
1、搞清楚动销率与售罄率这两个指标。
我最开始没太搞清楚,看了下大佬们的代码搞清楚了这2个指标。
动销率=有销售的SKU数量/在售SKU数量
有销售的SKU数量 对应 sales_tb 表中的 sales_num
在售SKU数量 对应 product_tb 表中的 inventory - sales_num
售罄率=GMV/(吊牌价*库存数)
2、联结2个表,sales_tb 作为主表,并把每个item_id的备货值求出来
select a.*,b.style_id,b.tag_price,b.inventory,b.tag_price*b.inventory 备货值
from sales_tb a
left join product_tb b on a.item_id=b.item_id
where a.sales_date>='2021-11-01' and a.sales_date<'2021-12-01'
3、基于第一步的table c,group by c.style_id,c.item_id
求得每个item_id的 sales_num、inventory、sales_price和备货值。
其中sales_num和sales_price 直接sum
而inventory和备货值我用的avg
因为每个item_id的inventory和备货值是固定不变的
不会因为多卖出一款item_id而累加。
select c.style_id,c.item_id
,sum(c.sales_num) sales_num
,avg(c.inventory) inventory
,sum(c.sales_price) sales_price
,avg(c.备货值) 备货值
from
(select a.*,b.style_id,b.tag_price,b.inventory,b.tag_price*b.inventory 备货值
from sales_tb a
left join product_tb b on a.item_id=b.item_id
where a.sales_date>='2021-11-01' and a.sales_date<'2021-12-01'
) c
group by c.style_id,c.item_id
4、基于第三步的table d,group by d.style_id, 求最后的动销率和售罄率。
select d.style_id
,round(sum(d.sales_num)/(sum(d.inventory)-sum(d.sales_num))*100,2) 动销率
,round(sum(d.sales_price)/sum(d.备货值)*100,2) 售罄率
from
(select c.style_id,c.item_id
,sum(c.sales_num) sales_num
,avg(c.inventory) inventory
,sum(c.sales_price) sales_price
,avg(c.备货值) 备货值
from
(select a.*,b.style_id,b.tag_price,b.inventory,b.tag_price*b.inventory 备货值
from sales_tb a
left join product_tb b on a.item_id=b.item_id
where a.sales_date>='2021-11-01' and a.sales_date<'2021-12-01'
) c
group by c.style_id,c.item_id) d
group by d.style_id
order by d.style_id