牛客网SQL大厂真题二刷小白白话总结(五)某宝店铺分析(电商模式)
目录
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大厂真题二刷小白白话总结(五)某宝店铺分析(电商模式)相关推荐
- 牛客网SQL大厂真题二刷小白白话总结(三)电商场景(某东商城)
三.电商场景(某东商城) 目录 SQL13 计算商城中2021年每月的GMV(简单) SQL14 统计2021年10月每个退货率不大于0.5的商品各项指标(中等) SQL15 某店铺的各商品毛利率及店 ...
- 牛客网SQL大厂真题二刷小白白话总结(二)用户增长场景(某度信息流)
二.用户增长场景(某度信息流) 目录 二.用户增长场景(某度信息流) SQL7 2021年11月每天的人均浏览文章时长(简单) SQL8 每篇文章同一时刻最大在看人数(中等) SQL9 2021年11 ...
- 牛客网SQL大厂真题—SQL158:每类视频近一个月的转发量/率
描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...
- 牛客网 2018校招真题 美团点评 K的倍数
Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...
- 牛客网 2018校招真题 摩拜 排序次数
Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...
- 牛客网 2018校招真题 滴滴出行 寻找丑数
Description 牛客网 2018校招真题 寻找丑数 Solving Ideas 参考<剑指offer>丑数 Time complexity : O(n)O(n)O(n) Space ...
- 牛客网 PTA乙级真题 1003 数素数
数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...
- 牛客网 2018校招真题 爱奇艺 最后一位
Description 牛客网 2018校招真题 最后一位 Solving Ideas 二分查找 Solution import java.io.BufferedReader; import java ...
- 牛客网 2018校招真题 京东 回文
Description 牛客网 2018校招真题 回文 Solving Ideas 计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成 ...
最新文章
- 容斥原理学习(Hdu 4135,Hdu 1796)
- python程序设计祁瑞华答案_【单选题】有六个元素 6 , 5 , 4 , 3 , 2 , 1 的顺序进栈,问下列哪一个不是合法的出栈序列? (2.0分)...
- 低代码平台如何一步步摧毁开发团队的效率与创新!
- java如何读取rfid的数据_100G 数据如何先随机读取1%?
- linux沙箱隔离_Linux沙箱技术介绍
- 这段js代码得拯救你多少时间
- 沃尔沃召回部分进口及国产车 共计131591辆
- VS2015常用快捷键总结
- 190410每日一句
- python视频教程推荐it教程网_Python系列视频教程集合【共119套】
- Go语言Revel框架 环境搭建
- UGUI长按按钮的实现(技能蓄力使用)
- Terraria(泰拉瑞亚)存档覆盖(Linux)
- mobi怎么在Android手机上打开?
- 微信小程序真机调试手机端在无法连接电脑localhost:3000时如何调试解决办法
- NET连接mysql字符串
- gardner环 matlab,gardner 算法matlab实现
- Python 英文分词
- python编写程序求e的值_Python 程序设计实验报告4
- pytest05、fixture