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

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

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

select
    ifnull (product_id, '店铺汇总'),#请注意这个地方可以设置别名,但是在group by 中不可以用别名,原因是这个属性只是针对原有的product_id进行一个
    concat (
        round(
            (1 - (sum(in_price * cnt) / sum(price * cnt))) * 100,
            1
        ),
        '%'
    ) allinprice
from
    tb_product_info
    join tb_order_detail using (product_id)
    join tb_order_overall using (order_id)
where
    date(event_time) >= '2021-10-01'
    AND shop_id = '901'
group by
    product_id# 此点与上文对应,不可以用别名来做分组
with
    rollup
having
     (1 - (sum(in_price * cnt) / sum(price * cnt))) >0.249 #因为同一个商店的同一个商品卖的价格会不一样,所以需要按照进价总量与售价总量来计算
     or product_id is null
order by 
    product_id

本题难度很大,第一了解题目需要按照商品总的进价和总的售价来计算商品的利润,第二个知识点是如果要在本题进行一个rollup汇总列的替换,就不能用别名,因为一旦用了别名那么汇总列就会根据别名来,就不会进入ifnull的函数判断了。第三个知识点是一个执行的顺序因为select 是在having之后,所以我们筛选的时候要把汇总行也要算入,所以需要判断product_id is null。具体代码如上

全部评论

相关推荐

浪漫主义的虹夏:都是校友,还是同届,我就说直白点,不委婉了,我相信你应该也不是个玻璃心,首先你觉得一个双非的绩点写简历上有用吗?班长职务有用吗?ccf有用吗?企业会关心你高数满分与否吗?第二,第一个项目实在太烂,一眼就能看出是外卖,还是毫无包装的外卖,使用JWT来鉴权,把热点数据放进Redis这两个点居然还能写进简历里,说难听点这两个东西都是学个几十分钟,调用个API就能完成的事情,在双非一本的条件下,这种项目你觉得能拿出手吗,第二个项目你写的东西和你的求职方向有任何的匹配吗?第三,计设那一块毫无价值,如果想突出自己会前端,直接写入专业技能不行吗,最后,专业技能里像深入理解JVM底层原理这种你觉得这句话你自己真的能匹配吗?都是校友加上同届,我措辞直接,但希望能点出你的问题,想进大厂还得继续沉淀项目和学习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务