题解 | #某宝店铺动销率与售罄率#
某宝店铺动销率与售罄率
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;