select 
style_id
,round(100*((sum(saled)/(sum(inventory)-sum(saled)))),2) pin_rate
,round(100*sum(gmv)/sum(tag_price*inventory),2)  'sell-through_rate'
from (
    select 
    item_id,sum(sales_price) gmv
    ,sum(sales_num) saled
    from sales_tb
    group by 1
    ) a
left join product_tb b
using(item_id)
group by 1
order by 1

本题最大的槛是:

有销售的SKU数量/在售SKU数量(请忽略动销率实际计算公式,以该题目提供的公式为准)’

解题思路

1.求什么(输出什么)

以style_id聚合,求动销率、售罄率

2.怎么求

动销率=已销售数量/剩余库存=已销售数量/(总库存-已销售数量)

——数据来源:已销售数量:销售表sales_tb的sales_num、总库存:product_tb的inventory

售罄率=GMV/备货值=GMV/(吊牌价*库存数)

——数据来源:GMV:销售表sales_tb的sales_price、吊牌价、总库存:product_tb的tag_price、inventory

3.连表

销售表sales_tb和产品表product_tb,直接左连接,会出现1对多的情况,数据重复,如inventory

处理方式:把有‘多’值的销售表先聚合,再左连接,作为数据源

from(
    select 
    item_id,sum(sales_price) gmv
    ,sum(sales_num) saled
    from sales_tb
    group by 1
    ) a
left join product_tb b
using(item_id)
group by 1
order by 1

4. 计算

根据上面的公式来就行

我自己错的地方:'sell-through_rate' 中间有个减号,列名加一个单引号,不然会报错​

select 
style_id
,round(100*((sum(saled)/(sum(inventory)-sum(saled)))),2) pin_rate
#动销率=已销售数量/剩余库存=已销售数量/(总库存-已销售数量)
,round(100*sum(gmv)/sum(tag_price*inventory),2)  'sell-through_rate'
#售罄率=GMV/备货值=GMV/(吊牌价*库存数)
from (

​完整代码

select 
style_id
,round(100*((sum(saled)/(sum(inventory)-sum(saled)))),2) pin_rate
,round(100*sum(gmv)/sum(tag_price*inventory),2)  'sell-through_rate'
from (
    select 
    item_id,sum(sales_price) gmv
    ,sum(sales_num) saled
    from sales_tb
    group by 1
    ) a
left join product_tb b
using(item_id)
group by 1
order by 1

补充点​

扩展一些其他相近的指标,deepseek生成的,风险信号及健康值酌情参考,以实际业务为准。