题解 | #统计10月每个退货率不大于0.5的商品各项指标#

统计2021年10月每个退货率不大于0.5的商品各项指标

https://www.nowcoder.com/practice/cbf582d28b794722becfc680847327be

-- 思路:

-- 1.先统计出每件商品的点击数/展示数/加购数/付款数/退款数

-- 2.按照各指标计算公式加工指标,当分母为0时整体结果记为0,结果中各项指标保留3位小数

-- 各指标计算公式:

-- 商品点击率=点击数/展示数

-- 加购率=加购数/点击数

-- 成单率=付款数/加购数

-- 退货率=退款数/付款数

-- 思路:
--      1.先统计出每件商品的点击数/展示数/加购数/付款数/退款数
--      2.按照各指标计算公式加工指标,当分母为0时整体结果记为0,结果中各项指标保留3位小数
-- 各指标计算公式:
--      商品点击率=点击数/展示数
--      加购率=加购数/点击数
--      成单率=付款数/加购数
--      退货率=退款数/付款数

-- 1.先统计出每件商品的点击数/展示数/加购数/付款数/退款数
with
    t1 as (
        select
            product_id,
            count(if_click) as display_cnt,
            count(if (if_click = 1, 1, null)) as click_cnt,
            count(if (if_cart = 1, 1, null)) as cart_cnt,
            count(if (if_payment = 1, 1, null)) as pay_cnt,
            count(if (if_refund = 1, 1, null)) as refund_cnt
        from
            tb_user_event
        where
            date_format (event_time, '%Y-%m') = '2021-10'
        group by
            product_id
    )
-- 2.按照各指标计算公式加工指标
--  当分母为0时整体结果记为0,结果中各项指标保留3位小数
select
    product_id,
    round(if (display_cnt > 0, click_cnt / display_cnt, 0), 3) as ctr,
    round(if (click_cnt > 0, cart_cnt / click_cnt, 0), 3) as cart_rate,
    round(if (cart_cnt > 0, pay_cnt / cart_cnt, 0), 3) as payment_rate,
    round(if (pay_cnt > 0, refund_cnt / pay_cnt, 0), 3) as refund_rate
from
    t1
group by
    product_id
having
    refund_rate <= 0.5
order by
    product_id
SQL大厂面试题 文章被收录于专栏

牛客网sql大厂面试题题解~

全部评论

相关推荐

04-21 13:50
已编辑
北京理工大学 硬件测试
我们学校连夜发了声明,绝了绝了!看完了全部ppt,震碎三观。一般情况下我是站学生的,但这不是一般情况。这男的不能被取消学位吗?自己吃到了红利,靠着面试泄题得到的保研,又反手举报导师。这导师是《被举报系列》里最惨最恋爱脑的了,当然最可怜的是他的同妻……
牛客小黄鱼:看了ppt的聊天记录,真不知道谁才是受害者!有人为你剥过柚子吗?有人为你雪地里等你吗?有人为你写过情书吗?有人为你规划未来吗?有人为你小心翼翼吗?有人为你整页失眠失眠吗? 有人为你送上自己的科研成果吗?有人为你安排出国留学吗?有人愿意给你一个月2万吗?
点赞 评论 收藏
分享
被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
03-21 08:46
已编辑
门头沟学院 C++
一个什么都不会的学生:当你有硕士学历的时候HR会说就是比本科生强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务