题解 | #某宝店铺动销率与售罄率#

某宝店铺动销率与售罄率

http://www.nowcoder.com/practice/715dd44c994f45cb871afa98f1b77538

题目:

请你统计每款的动销率(pin_rate,有销售的SKU数量/在售SKU数量)与售罄率(sell-through_rate,GMV/备货值,备货值=吊牌价*库存数),按style_id升序排序。

明确

一、动销率 Stock Keeping Unit (库存量单位)。在很多业务场景下,是计算库存进出计量,物理上不可分割的最小存货单元,表示某款商品的具体配置(规格、颜色等)。

有销售的SKU数量 / 在售SKU数量

有销售的SKU数量:售出的SKU数量总和(商品期间销售数量)

在售的SKU数量 :剩余(总库存 - 售出)库存SKU的数量总和(商品期末库存数量)

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

GMV :所有订单的金额总和(很多场景下,下单未付款的订单金额也计算在内)

吊牌价 :商品详情页显示的价格

错误想法

select style_id,
       round(100*sum(sales_num)/ (sum(inventory)-sum(sales_num)),2) as 'pin_rate(%)',
       round(100*sum(sales_price)/ sum(inventory*tag_price),2) as 'sell-through_rate(%)'
from product_tb t1
join sales_tb t2
on t1.item_id=t2.item_id
group by style_id
order by style_id

错误原因

直接做连接做计算会导致有重复购买记录的商品的inventory多次计算,计算结果会变小。 要将两个表的计算分开进行。

正确做法

select style_id,
    round(100*sum(num)/ (sum(inventory)-sum(num)),2) as 'pin_rate(%)',
    round(100*sum(item_GMV)/ sum(inventory*tag_price),2) as 'sell-through_rate(%)'
from product_tb a
join 
(select item_id,
    sum(sales_num) as num,
    sum(sales_price) as item_GMV
 from sales_tb
 group by item_id) as b
on a.item_id=b.item_id
group by style_id
order by style_id
全部评论
请问一下“直接做连接做计算会导致有重复购买记录的商品的inventory多次计算,计算结果会变小。 要将两个表的计算分开进行。”这句话要怎么理解呢。。。想不明白了,一直做sum的话inventory这个底数不是不会变吗?还是说计算口径变了?
1 回复 分享
发布于 2022-10-18 14:41 广东
请问join的时候sum(sales_num),但是公式里面又sum(num)是为什么啊,这不是相当于sum了两次吗?
点赞 回复 分享
发布于 2023-01-20 03:18 美国

相关推荐

尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
46 1 评论
分享
牛客网
牛客企业服务