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

某宝店铺动销率与售罄率

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

#统计每款的动销率(pin_rate,已售商品总数/剩余库存数,)与
#售罄率(sell-through_rate,GMV/备货值,备货值=吊牌价*库存数),按style_id升序排序
# 问题分解:
 
# 1. 动销率(pin_rate,已售商品总数/剩余库存数),
# 动销率=已售商品总数/剩余库存数
# 已售商品总数,:sum(sales_tb.sales_num)
# 剩余库存数:sum(product_tb.inventory)-sum(sales_tb.sales_num)

# 2. 售罄率(sell-through_rate,GMV/备货值,备货值=吊牌价*库存数)
# GMV=sum(sales_tb.sales_price)
# 备货值=sum(tag_price*inventory)

# 3. 每款的动销率和售罄率,使用分组,group by style_id

# 4. 排序,order by style_id

# 5. 表链接,俩表不能直接链接,因为直接链接会导致有重复购买记录的商品inventory多次计算,剩余库存数和备货值,将两个表计算分开
# sales_tb 中计算: 已售商品总数,GMV
# product_tb 中计算: 库存数,备货值

# 已售商品总数和GMV计算,因为同一货号会有多次售卖记录,所以按照货号item_id分组,计算出每个货号的已售总数和已售总金额

# select item_id,sum(sales_num) as num_done, sum(sales_price) as price_done
# from sales_tb
# group by item_id
# 作为子查询结果,接下来和表product链接,



select style_id, 
round(100*sum(num_done)/ (sum(inventory)-sum(num_done)),2) AS 'pin_rate(%)',
round(100*sum(price_done)/sum(tag_price * inventory),2) AS 'sell_through_rate(%)'
from product_tb
join (select item_id,sum(sales_num) as num_done, sum(sales_price) as price_done
from sales_tb group by item_id) as A using(item_id)
group by style_id
order by style_id;

全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务