题解 | #某店铺的各商品毛利率及店铺整体毛利率#

某店铺的各商品毛利率及店铺整体毛利率

http://www.nowcoder.com/practice/65de67f666414c0e8f9a34c08d4a8ba6

本题用到三个知识点
  1. 在分组统计的基础上汇总
  2. 由此衍生出union()函数的排序
  3. 输出百分数,保留N位小数
知识点掌握后,则需要细心点,对数据进行筛选,此处需要拆解条件。

知识点1:分组统计的基础上汇总的两种解法

  1. 使用uion,将分组统计和汇总数据拼接起来
  2. 使用group by 分组标准 with rollup,直接得到汇总数据。但分组列名会出现空值,需要使用ifnull()函数来填充空值
            -- IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
eg:ifnull(product_id,'店铺汇总') product_id↓↓↓

知识点2:使用union()函数,order by只能在最后使用一次

如需要对各部分分别排序,代码如下
select * from 
(select * from table1 order by a desc)aa
union all
select * from
(select * from table2 order by b)bb
注:union可以使用任何select的语句,包括having

知识点3:输出百分数,保留1位小数

    首先,让小数*100,得到数字a
    然后,让数字a保留1位小数,使用round(a,1),得到数字b
    最后,给小数加上百分号concat(b,'%')
注:concat(round(3/7*100,1),'%')>50,意为和50%比较


开始解题,首先筛选数据,需要满足条件
【问题】计算2021年10月以来店铺901中商品毛利率大于24.9%的商品信息及店铺整体毛利率
  • 【条件1】2021年10月以来 -- date(event_time)>'20211001'
  • 【条件2】店铺901 -- shop.id=901
  • 【条件3】毛利率大于24.9%,计算毛利率需要知道【进价总成本】以及【销售收入】(这里忽略讲解为什么商品毛利率计算公式等于店铺毛利率计算公式)
        -- 进价总成本=sum(in_price*cnt)
        -- 销售收入=sum(price*cnt)
  • 【条件4】由销售收入挖掘到隐藏条件 -- 商品已付款,status=1

为了提高写代码的速度,使用了with as(不懂的,百度下吧)
使用union写的代码↓↓↓
with t as(
select p.product_id, p.in_price,d.price,d.cnt
from tb_order_overall o
left join tb_order_detail d 
on o.order_id = d.order_id
left join tb_product_info p 
on p.product_id = d.product_id
where o.status = 1
and date(o.event_time)>='2021-10-01'
and p.shop_id = 901
  )
   
select '店铺汇总' as product_id,
concat(round((1-sum(in_price*cnt)/sum(price*cnt))*100,1),'%')  as profit_rate
from t
union
select * from
(select product_id,
concat(round((1-sum(in_price*cnt)/sum(price*cnt))*100,1),'%')  as profit_rate
from t
group by product_id
having profit_rate>24.9
order by product_id
)t2
;







全部评论
为啥我的“店铺汇总”出现在最后一行
点赞 回复 分享
发布于 2022-08-11 01:26
请问你哪里用到了with rollup
点赞 回复 分享
发布于 2022-09-21 10:55 北京
profit rate 能直接大于24.9这么写吗?
点赞 回复 分享
发布于 2023-02-01 12:18 山西

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
14 6 评论
分享
牛客网
牛客企业服务