SELECT t1.style_id, ROUND(total_sold/(total_inventory-total_sold)*100,2) 'pin_rate(%)', 
ROUND(GMV/stockup_val*100,2) 'sell-through_rate(%)'
FROM
(SELECT style_id, SUM(sales_num) total_sold, SUM(sales_price) GMV
FROM sales_tb JOIN product_tb ON sales_tb.item_id=product_tb.item_id
GROUP BY style_id) t1
JOIN 
(SELECT style_id, SUM(inventory) total_inventory, SUM(tag_price*inventory) stockup_val
FROM product_tb GROUP BY style_id) t2
ON t1.style_id=t2.style_id
ORDER BY style_id

参考题解区高赞的BLAcKSQAoO可以了解到题目指标的计算方法。

这个要mark的是,不要先两表用style_id连接然后草草计算指标!像SUM(inventory)和SUM(tag_price* inventory)先两表做连接再计算就会算多,因为把inventory算重复了。

正确做法是先在对应表算出正确的子指标,再计算动销率和售罄率。