IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 9、刷牛客网SQL题(三) -> 正文阅读

[大数据]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,
        count(id) total_count,
        sum(if(if_click=1,1,0)) click_count,
        sum(if(if_cart=1,1,0)) cart_count,
        sum(if(if_payment=1,1,0)) pay_count,
        sum(if(if_refund=1,1,0)) refund_count
    from tb_user_event
    where date_format(event_time,'%Y-%m')='2021-10'
    group by product_id
)t1
where pay_count=0 or refund_count/pay_count<=0.5
order by product_id
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:32:03  更:2022-03-30 18:35:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:26:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码