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

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

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

该题为简单题,一张表就可以解决
逻辑顺序为

  • from 表 tb_order_overall
  • 添加条件
    * 每月:GROUP BY DATE_FORMAT(time,"%Y-%m)
    * 大于十万
    * GMV为已付款订单和未付款订单两者之和:status IN (‘0’,‘1’)
    * 2021年: LIKE “2021%”
    * 升序
  • 查找
    • 时间 DATE_FORMAT(event_time,"%Y-%m")
    • 每月GMV,要求整数: round(SUM(total_amount) ,0)
SELECT DATE_FORMAT(event_time,"%Y-%m"),
SUM(total_amount) st
FROM tb_order_overall
where status in ("0","1")
AND event_time LIKE "2021%"
GROUP BY DATE_FORMAT(event_time,"%Y-%m")
HAVING st>100000
ORDER BY st

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

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

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

  • 时间:WHERE DATE_FORMAT(event_time,"%Y-%m") = “2021-10”
  • 各个商品:GROUP BY product_id
  • 各个比率:
    商品点展比 SUM(if_click) / COUNT(if_click)
    加购率 SUM(if_cart) / SUM(if_click)
    成单率 SUM(if_payment)/SUM(if_cart)
    退货率 SUM(if_refund)/ SUM(if_payment)
  • 退货率不大于0.5 HAVING 退货率<=0.5
  • order by product_id
SELECT product_id,
round(SUM(if_click)/COUNT(if_click),3) ctr,
round(SUM(if_cart)/SUM(if_click),3) cart_rate,
round(SUM(if_payment)/SUM(if_cart),3) pay_rate,
round(SUM(if_refund)/ SUM(if_payment),3) ref_rate
FROM tb_user_event
WHERE DATE_FORMAT(event_time,"%Y-%m") = "2021-10"
GROUP BY product_id
HAVING ref_rate <=0.5
order by ref_rate

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



场景逻辑说明:

用户将购物车中多件商品一起下单时,订单总表会生成一个订单(但此时未付款,status-订单状态为0表示待付款),在订单明细表生成该订单中每个商品的信息;

当用户支付完成时,在订单总表修改对应订单记录的status-订单状态为1表示已付款;

若用户退货退款,在订单总表生成一条交易总金额为负值的记录(表示退款金额,订单号为退款单号,status-订单状态为2表示已退款)。

问题:请计算2021年10月以来店铺901商品毛利率大于24.9%的商品信息及店铺整体毛利率。

注:商品毛利率=(1-进价/平均单件售价)*100%;
店铺毛利率=(1-总进价成本/总销售收入)*100%。
结果先输出店铺毛利率,再按商品ID升序输出各商品毛利率,均保留1位小数。

解体思路

  • 统计各个商品信息:

    GROUP BY product_id

    产品表连接订单表、连接订单详细表:表INNER JOIN表INNER JOIN表

    增加题目条件:
    日期 DATE_FORMAT(too.event_time,"%Y-%m") >= “2021-10”
    商店 tp.shop_id = 901

  • 计算商品毛利率 a
    1-SUM(in_price * cnt)/SUM(price * cnt)
    不用 1-in_price/AVG(price) 是因为in_price会报FD错误

  • 计算商店毛利路
    利用 ROLL UP 函数 对所有product生成 合计,就是商品毛利率

  • 将合计的NULL 变为 店铺汇总,并将毛利率变为百分比
    IFNULL(product_id,“店铺汇总”)
    CONCAT(round(a * 100,1),"%")

  • 排序
    order by 毛利率

SELECT IFNULL(t.pid,"店铺汇总"),concat(t.interest,"%") profit_rate
FROM
(SELECT tod.product_id pid,
round((1-SUM(in_price*cnt)/SUM(price*cnt))*100,1) interest
FROM tb_product_info tp INNER JOIN tb_order_detail tod ON tp.product_id = tod.product_idINNER JOIN tb_order_overall too ON too.order_id = tod.order_id
WHERE DATE_FORMAT(too.event_time,"%Y-%m") >= "2021-10"
AND tp.shop_id = 901
GROUP BY tod.product_id
WITH ROLLUP
HAVING interest >= 24.9 OR pid IS NULL )t
order by t.pid

零食类商品中复购率top3高的商品
问题:请统计零食类商品中复购率top3高的商品。

注:复购率指用户在一段时间内对某商品的重复购买比例,复购率越大,则反映出消费者对品牌的忠诚度就越高,也叫回头率
此处我们定义:某商品复购率 = 近90天内购买它至少两次的人数 ÷ 购买它的总人数
近90天指包含最大日期(记为当天)在内的近90天。结果中复购率保留3位小数,并按复购率倒序、商品ID升序排序

这个题我踩的坑是:复购率其实是先聚焦用户再看商品的一个比率,而我一开始就只是考虑的商品

解题思路

  • 三表连接:因为要tag\product id\uid还有event time
    • 找到 各个用户 买的 各个零食
      tag = “零食”
      GROUP BY uid,product_id
    • 近九十天:event_time >=(SELECT DATE_SUB(max(event_time) INTERVAL 89 DAY) FROM )
    • 找到复购的产品 IF(COUNT(event_time) >1,1,0) repurchase
  • 上面为一张表
  • 复购率:
  • SUM(repurchase) 复购人数
  • 除以
  • COUNT(repurchase) 购买人数
  • 因为上一张表是group by uid , pid
    所以这个表有多个pid 故 group pid
    或者说产品复购率最终还是要回到产品上
  • top3 + 复购率倒序、商品ID升序排序
  • ORDER BY repurchase DESC , pid
  • LIMIT 3
SELECT t.product_id,
ROUND(SUM(repurchase)/ COUNT(repurchase),3) re_rate
FROM
(SELECT uid, product_id, IF(COUNT(event_time)>1, 1, 0) as repurchaseFROM tb_order_detailJOIN tb_order_overall USING(order_id)JOIN tb_product_info USING(product_id)WHERE tag="零食" AND event_time >= (SELECT DATE_SUB(MAX(event_time), INTERVAL 89 DAY)FROM tb_order_overall)GROUP BY uid, product_id)tGROUP BY t.product_idORDER BY re_rate desc ,t.product_idlimit 3

10月的新户客单价和获客成本

SELECT ROUND(SUM(total_amount)/ COUNT(DISTINCT uid),1),ROUND(AVG(sump-total_amount),1)
FROM
(SELECT order_id,sum(price*cnt) sump FROM tb_order_detail GROUP BY order_id) t1
INNER JOIN
(SELECT order_id, uid,total_amount,event_time,rank()over(partition by uid order by event_time) rnk
FROM tb_order_overall
)t2
ON t1.order_id = t2.order_id
WHERE rnk = 1
AND DATE_FORMAT(event_time,"%Y-%m") = "2021-10"

牛客网SQL--某东篇相关推荐

  1. 牛客网SQL 进阶篇刷题

    牛客网SQL 进阶篇刷题(1-19) 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分: 用户1002在2021年9月4日上午7点1分2秒开始 ...

  2. 牛客网sql题库(1-30题)—— 个人答案与过程解析

    本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果.结果均通过了牛客网的结果验证. 具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程 每道题下面都有我自己写的题 ...

  3. 牛客网数据开发题库_练习SQL利器,牛客网SQL实战题库

    牛客网SQL实战网址:https://www.nowcoder.com/ta/sql 持续更新--记录自己在牛客网SQL的做题过程 更新进度:61题,2019-4-3,更完了 1.查找最晚入职员工的所 ...

  4. sql里查询一个组和组的用户数怎么查?_【牛客网SQL刷题】留存率怎么算?

    抽空刷了牛客网SQL实战72题,最后几道以牛客网为例的题目还挺有挑战性,在此记录 统计时间段新用户次日留存率 每日的次日留存率 每日的新用户数 每日新用户的次日留存 求新登录用户次日留存 表login ...

  5. 牛客网SQL实战二刷 | Day10

    「牛客网SQL实战二刷」是个系列学习笔记博文,今天解析7道SQL题目- 第55 - 61题. 每篇笔记的格式大致为,三大板块: 大纲 题目(题目描述.思路.代码.相关参考资料/答疑) 回顾 ❤️「往期 ...

  6. 牛客网sql练习题解(22-32)

    文章目录 简介 NO.22 NO.23 NO.24 NO.25 NO.26 NO.27 NO.28 NO.29 NO.30 NO.31 NO.32 简介 往期文章: 牛客网sql练习题解 (1-11) ...

  7. 牛客网sql练习题解(12-21)

    文章目录 简介 NO.12 NO.13 NO.14 NO.15 NO.16 NO.17 NO.18 NO.19 NO.20 NO.21 简介 按时来更,感觉题目不是很难,不过我有一个感觉就是虽然题目简 ...

  8. 牛客网-SQL题库笔记

    牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...

  9. 牛客网sql练习打卡

    目录 第一题 解题: 1.使用表的子连接 2.使用降序取第一个 第二题 解题: 1.降序取第三个 2.limit offset 3.子查询 2021/10/8 今天第一次开始尝试使用牛客网练习sql, ...

  10. 牛客网SQL实战二刷 | Day2

    「牛客网SQL实战二刷」是个系列学习笔记博文,每天解析6道SQL题目- 今天是第7-12 题!该系列的其他博文,可在「我的博客」 中查看- 每篇笔记的格式大致为,三大板块: 大纲 题目(题目描述.思路 ...

最新文章

  1. matlab中,怎样把矩阵中所有的0改为2
  2. FreeSWITCH 学习笔记(一)
  3. 作为软件工程师,你必须知道的20个常识
  4. ERP选型 SAP PK Oracle
  5. pacemaker集群管理相关命令
  6. 中职学校计算机专业的论文,中职计算机论文范文2篇
  7. int main(argc,*argv)中argc,argv的相关说明
  8. eclipse开发cocos2dx 3.2环境搭建之一: Android C\C++环境搭建(ndk r9d)
  9. 计算机安全性无效无法连接到网络,图文研习windows10系统连接网络提示无法连接到此网络错误的方法?...
  10. java ftp获取文件夹大小,java 用FTPClient 下载文件时不显示总大小?解决方案
  11. maven java 参数_将Maven参数注入Java类
  12. 基于并行附加特征提取网络的SSD地面小目标检测模型
  13. 算法竞赛入门经典 例题6-6 小球下落(python、C)
  14. 多维数据库介绍【转】
  15. 人人皆知Python功能,你还不了解嘛?
  16. 毕设题目:Matlab机器人路径规划
  17. DEM高程数据下载方法
  18. c语言include iostream,求助,虚拟机上#includeiostream一直报错
  19. W5500以太网控制器芯片(一):ioLibrary库实现TCP服务器
  20. HTMl 实现用户的登录注册界面

热门文章

  1. 止损的意义是什么?我们为何要止损这个操作?
  2. git恢复误删代码或文件
  3. 硬件知识(二)无源RC二阶滤波电路
  4. 面向对象的3个基本对象
  5. 开根号的笔算算法图解_一个数的开根号怎么计算
  6. Apache安装和配置详细
  7. 智能制造 | 机器视觉系统,直击纺织行业人工质检痛点难点,提升缺陷检出精准度至99.9%
  8. JDBC--基础JDBC
  9. KeyError: ‘/home/xxx/anaconda3/lib/python3.8/site-packages/parso/python/grammar38.txt‘
  10. 前端复习之HTML5