9、刷牛客网SQL题(三)

题目来源

牛客网SQL大厂真题——电商场景(某东商城)


一、SQL1(简单)

1.题目内容

描述
现有订单总表tb_order_overall
在这里插入图片描述
场景逻辑说明
用户将购物车中多件商品一起下单时,订单总表会生成一个订单(但此时未付款,status-订单状态为0,表示待付款);
当用户支付完成时,在订单总表修改对应订单记录的status-订单状态为1,表示已付款;
若用户退货退款,在订单总表生成一条交易总金额为负值的记录(表示退款金额,订单号为退款单号,status-订单状态为2表示已退款)。

问题:请计算商城中2021年每月的GMV,输出GMV大于10w的每月GMV,值保留到整数。

:GMV为已付款订单和未付款订单两者之和。结果按GMV升序排序。

输出示例
示例数据输出如下:
在这里插入图片描述
解释:
2021年10月有3笔已付款的订单,1笔未付款订单,总交易金额为109800;2021年11月有2笔已付款订单,1笔未付款订单,
总交易金额为111900(还有1笔退款订单由于已计算了付款的订单金额,无需计算在GMV中)。

2.思路分析

题目要求的是2021年每月的GMV,所以首先要根据event_time筛选出来2021年的数据,又因为GMV是由已付款订单和未付款订单两者之和组成的,所以还要筛选出来status为1和0的数据。筛选出来后,根据年—月进行分组求和即可。

3.语句实现

select
    date_format(event_time,'%Y-%m') month,
    sum(abs(total_amount)) GMV
from tb_order_overall
where year(event_time)='2021' and (status=1 or status=0)
group by date_format(event_time,'%Y-%m')
having GMV>100000
order by GMV

二、SQL1(简单)

1.题目内容

描述
现有用户对展示的商品行为表tb_user_event
在这里插入图片描述

问题:请统计2021年10月每个有展示记录的退货率不大于0.5的商品各项指标,


商品点展比=点击数÷展示数;
加购率=加购数÷点击数;
成单率=付款数÷加购数;退货率=退款数÷付款数,
当分母为0时整体结果记为0,结果中各项指标保留3位小数,并按商品ID升序排序。

输出示例
示例数据的输出结果如下
在这里插入图片描述
解释
在2021年10月商品8001被展示了6次,点击了5次,加购了4次,付款了3次,退款了1次,因此点击率为5/6=0.833,加购率为4/5=0.800,
成单率为3/4=0.750,退货率为1/3=0.333(保留3位小数);

2.思路分析

题目要求的时2021年10月每个有展示记录的退货率不大于0.5的商品各项指标,首先要注意以下几点:
1)有展示记录:每一条数据就是一个展示记录
2)退货率不大于0.5:退货率是退款数除以付款数,而这里付款数可能为0,所以要注意判断分母是否为0

首先,要根据event_time过滤出来时间为2021-10月份的数据,按商品id分组,count(*)就是展示数,count(if())结合if_click、if_cart、if_payment、if_refund这些字段可以分别求出来加购数、付款数、退款数,进而做除法就可以得到最后结果了,最后按商品id升序即可。(做除法时,先要判断分母是否为0)

3.语句实现

select
    product_id,
    round(click_count/total_count,3) ctr,
    round(if(click_count=0,0,cart_count/click_count),3) cart_rate,
    round(if(cart_count=0,0,pay_count/cart_count),3) payment_rate,
    round(if(pay_count=0,0,refund_count/pay_count),3) refund_rate
from
(
    select
        product_id
### 牛客网 SQL 基础练习指南 牛客网是一个提供多种编程语言和数据库练习的在线平台,非常适合初学者和求职者进行 SQL 基础练习。以下是详细的 SQL 基础练习指南,帮助你高效地在牛客网上进行 SQL 学习。 #### 1. 注册并登录 首先,你需要在牛客网上注册一个账号,并登录。可以使用手机号、邮箱等方式进行注册。注册完成后,登录到你的账户。 #### 2. 进入页面 登录后,进入“”页面,选择“数据库/SQL”分类。牛客网提供了丰富的 SQL 目,涵盖了基础查询、复杂查询、数据库设计等多个方面。 #### 3. 选择目进行练习 牛客网SQL 目分为不同的难度等级,包括入门、简单、中等、较难和困难。建议初学者从简单的目开始练习,逐步提高难度。你可以通过分类浏览选择目,也可以直接搜索特定的目。 - **SQL 快速入门**:共 42 ,适合初学者快速上手。 - **SQL 大厂笔试真**:共 74 ,包含一些知名企业的笔试目。 - **SQL**:共 82 ,涵盖常见的高频目。 - **SQL 必知必会**:共 50 ,适合巩固基础知识。 #### 4. 查看解与讨论 提交完 SQL 答案后,你可以查看牛客网提供的解,或与其他用户一起讨论,了解更优的解法。牛客网的讨论区非常活跃,有很多高手分享他们的思路和代码,这对新手非常有帮助。 #### 5. 做错复习 每做错一,你可以在错本里记录下来,便于后续复习和总结。牛客网提供了错本功能,方便你随时回顾自己做错的目。 #### 6. 挑战赛/竞赛 牛客网还定期举办 SQL 挑战赛和竞赛,这些活动不仅可以检验你的学习成果,还可以与其他用户竞争,提升自己的技能。 #### 建议 - **从简单目开始**:建议从简单的目开始,逐步提高难度,确保基础扎实。 - **满 150 以上**:为了更好地掌握 SQL,建议至少 150 道目,涵盖不同类型的目。 #### 示例代码 以下是一个简单的 SQL 查询示例,用于统计某个用户在牛客网上完成的试卷数量: ```sql SELECT uid, COUNT(exam_id) AS exam_count FROM exam_record WHERE submit_time IS NOT NULL GROUP BY uid; ``` 这个查询可以帮助你了解用户完成试卷的情况,进一步分析用户的答行为。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值