目录

SQL25 某宝店铺的SPU数量(简单)

SQL26 某宝店铺的实际销售额与客单价(简单)

SQL27 某宝店铺折扣率(中等)

SQL28 某宝店铺动销率与售罄率(较难)

SQL29 某宝店铺连续2天及以上购物的用户及其对应的天数(较难)


SQL25 某宝店铺的SPU数量(简单)

select style_id,count(item_id) as SPU_num
from product_tb
group by style_id
order by SPU_num desc

很简单,略

SQL26 某宝店铺的实际销售额与客单价(简单)

select sum(sales_price) as sales_total,
round(sum(sales_price)/count(distinct user_id),2) as per_trans
from sales_tb

SQL27 某宝店铺折扣率(中等)

select round(sum(s.sales_price)/sum(s.sales_num*p.tag_price)*100,2) as "discount_rate(%)"
from sales_tb as s
left join product_tb as p
using(item_id)

这道题虽说是中等,但也比较简单,值得注意的就是sales_price并不是每个商品的出售单价,而是结算总金额,即可能是多个加总在一起的价格,因此直接相加就是所有商品卖了多少钱;相比之下,不同商品的sales_num和tag_price相乘再加总才是标签价格之和。

SQL28 某宝店铺动销率与售罄率(较难)

select style_id,
round(sum(sales_num)/(sum(inventory)-sum(sales_num))*100,2) as pin_rate,
round(sum(sales_price)/sum(tag_price*inventory)*100,2) as "sell-through_rate"
from
product_tb t1
left join
(select item_id,sum(sales_num) as sales_num,
sum(sales_price) as sales_price
from
sales_tb
group by item_id) t2
on t1.item_id=t2.item_id
group by style_id
order by style_id

这一题我一开始报错是因为想的太简单了,我直接把两个表连接,然后group by style_id,

select style_id,

       round(100*sum(sales_num)/ (sum(inventory)-sum(sales_num)),2) as 'pin_rate(%)',

       round(100*sum(sales_price)/ sum(inventory*tag_price),2) as 'sell-through_rate(%)'

from product_tb t1

join sales_tb t2

on t1.item_id=t2.item_id

group by style_id

order by style_id

但是这一题两个表中的信息只有第一个表有style_id,第二个表同一个style下的item还可能会重复出现,直接做连接做计算会导致有重复购买记录的商品的inventory多次计算,计算结果会变小,因为每个style_id下有多个item_id的购买纪录,比如一个item买了两次,那么连接表里面的inventory也就重复了两次,加总起来就多了,因此考虑单独把第二个表用group by item_id处理之后再和第一个表进行连接,这样的话,就保证每个style下的item_id只出现一次,那么存货也就只计算一次。

一定要考虑清楚出售纪录和存货纪录之间的关系,并不是一一对应,尤其是出售纪录,每种产品可能会重复出现,这种情况下就要考虑是否需要局部使用group by.

SQL29 某宝店铺连续2天及以上购物的用户及其对应的天数(较难)

select user_id,count(*) days_count
from
(select distinct user_id,sales_date,dense_rank() over(partition by user_id order by sales_date) rn
from sales_tb) a
group by user_id,date_add(sales_date,interval -rn day)
having days_count>=2
order by user_id

这一题就是经典题型——解决“连续两天”这个条件。

考虑“将编号和日期相减,如果连续的话,差值会相等”

这个技巧很好理解,因为如果按照日期来对购买纪录进行排序,那么日期和排序是同时由小变大的,只是变化的幅度可能不一样,对于排序来讲,DENSE_RANK() 排名会得到:1,1,2,3,4,所以相同日期的编号一样,但是编号变化值一直都是1,这就意味着,天数变化值也是1的时候,两者之差保持不变。

因此答案也就很好理解了,对每一个user的购买纪录进行时间排序,再针对时间和排序之差进行group by,并计算相同差值下的购买纪录条数:count(*)

再筛选出连续2天及以上的用户即可。

牛客网SQL大厂真题二刷小白白话总结(五)某宝店铺分析(电商模式)相关推荐

  1. 牛客网SQL大厂真题二刷小白白话总结(三)电商场景(某东商城)

    三.电商场景(某东商城) 目录 SQL13 计算商城中2021年每月的GMV(简单) SQL14 统计2021年10月每个退货率不大于0.5的商品各项指标(中等) SQL15 某店铺的各商品毛利率及店 ...

  2. 牛客网SQL大厂真题二刷小白白话总结(二)用户增长场景(某度信息流)

    二.用户增长场景(某度信息流) 目录 二.用户增长场景(某度信息流) SQL7 2021年11月每天的人均浏览文章时长(简单) SQL8 每篇文章同一时刻最大在看人数(中等) SQL9 2021年11 ...

  3. 牛客网SQL大厂真题—SQL158:每类视频近一个月的转发量/率

    描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...

  4. 牛客网 2018校招真题 美团点评 K的倍数

    Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...

  5. 牛客网 2018校招真题 摩拜 排序次数

    Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...

  6. 牛客网 2018校招真题 滴滴出行 寻找丑数

    Description 牛客网 2018校招真题 寻找丑数 Solving Ideas 参考<剑指offer>丑数 Time complexity : O(n)O(n)O(n) Space ...

  7. 牛客网 PTA乙级真题 1003 数素数

    数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...

  8. 牛客网 2018校招真题 爱奇艺 最后一位

    Description 牛客网 2018校招真题 最后一位 Solving Ideas 二分查找 Solution import java.io.BufferedReader; import java ...

  9. 牛客网 2018校招真题 京东 回文

    Description 牛客网 2018校招真题 回文 Solving Ideas 计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成 ...

最新文章

  1. 容斥原理学习(Hdu 4135,Hdu 1796)
  2. python程序设计祁瑞华答案_【单选题】有六个元素 6 , 5 , 4 , 3 , 2 , 1 的顺序进栈,问下列哪一个不是合法的出栈序列? (2.0分)...
  3. 低代码平台如何一步步摧毁开发团队的效率与创新!
  4. java如何读取rfid的数据_100G 数据如何先随机读取1%?
  5. linux沙箱隔离_Linux沙箱技术介绍
  6. 这段js代码得拯救你多少时间
  7. 沃尔沃召回部分进口及国产车 共计131591辆
  8. VS2015常用快捷键总结
  9. 190410每日一句
  10. python视频教程推荐it教程网_Python系列视频教程集合【共119套】
  11. Go语言Revel框架 环境搭建
  12. UGUI长按按钮的实现(技能蓄力使用)
  13. Terraria(泰拉瑞亚)存档覆盖(Linux)
  14. mobi怎么在Android手机上打开?
  15. 微信小程序真机调试手机端在无法连接电脑localhost:3000时如何调试解决办法
  16. NET连接mysql字符串
  17. gardner环 matlab,gardner 算法matlab实现
  18. Python 英文分词
  19. python编写程序求e的值_Python 程序设计实验报告4
  20. pytest05、fixture

热门文章

  1. 如何解决谷歌浏览器解决跨域访问的问题
  2. 【大疆无人机OnboardSDK(一)Assistant2仿真系统搭建】
  3. 常见的几种消息中间件
  4. 小程序毕业设计 基于微信景点预约购票小程序毕业设计开题报告功能参考
  5. 基于图像分割网络HRNet实现人像分割
  6. 日记侠:什么都没有,如何撬动朋友圈高端人脉?
  7. 一篇好的创业计划书应该包含哪些内容?没有比这说的更全的了
  8. Resolved color instead of a resource id
  9. 单例 Start BlueStacks 安卓模拟器
  10. 不定方程求解(C语言)