本题的难度在于将店铺汇总信息和查询结果汇总起来,需要用到union连接
需要一定的刷题知识,见过此类型题之后再做就不难了
WITH t1 as( -- 第一条查出符合时间的条
select d.*
FROM tb_order_detail d
JOIN tb_order_overall too
ON d.order_id = too.order_id
WHERE DATE_FORMAT(event_time,'%Y-%m')>='2021-10'
),t2 as( -- 第二个表找出符合店铺的条数
SELECT
t1.*,
in_price,
in_price*t1.cnt s_inprice,
price*cnt s_price
FROM t1 JOIN tb_product_info tp
ON t1.product_id=tp.product_id
WHERE shop_id=901
),t3 as( -- 第三个找出符合该题的条件商品的利率
SELECT
product_id,
concat(round((1-sum(s_inprice)/sum(s_price))*100,1),'%') profit_rate
FROM t2
GROUP BY product_id
HAVING profit_rate> 29.3
order by profit_rate
)
-- 最后添加一行信息通过union将店铺汇总和表3的结果合并即可
SELECT '店铺汇总' AS product_id,
concat(round((1-sum(s_inprice)/sum(s_price))*100,1),'%') profit_rate
FROM t2
UNION
select * FROM t3



京公网安备 11010502036488号