牛客SQL 大厂面试真题 某宝店铺分析 5套代码及解析
5.某宝店铺分析(电商模式)
SQL180 某宝店铺的SPU数量
select style_id,
count(item_id) as SPU_num
from product_tb
group by style_id
order by SPU_num desc
SQL181 某宝店铺的实际销售额与客单价
select
sum(sales_price) as sales_total,
round(sum(sales_price)/count(distinct user_id),2) as per_trans
from sales_tb
SQL182 某宝店铺折扣率
- 题目中sales_price是结算金额,不要像我一样把他当成单个产品的售出金额,又给他乘一遍sales_num)
select
round(sum(sales_price)/sum(tag_price*sales_num)*100,2) as discount_rate
from product_tb
join sales_tb using(item_id)
SQL183 某宝店铺动销率与售罄率
- 第一次是这么写的,但是结果都偏小。 原因是:库存表与销售表连接之后对应的每条sku的库存记录不是唯一的,inventory会有重复的计算,直接计算结果偏小。举个例子,sales_tb里有两个A003,就会返回两个A003对应的inventory,所以需要去重。
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
left join sales_tb using(item_id)
group by style_id
order by style_id
- 下面是正确的写法,先通过item_id进行分组,求出每个item_id下售出的商品数量以及GMV,再通过style_id进行分组,求出每个style_id下的商品动销率和售空率
select style_id,
round(sum(num)/(sum(inventory)-sum(num))*100,2) as pin_rate,
round(sum(GMV)/sum(tag_price*inventory)*100,2) as sell_through_rate
from product_tb as a
join (select item_id,sum(sales_num) as num,sum(sales_price) as GMVfrom sales_tb group by item_id) as b
on a.item_id=b.item_id
group by style_id
order by style_id
- 通过对inventory去重,也可以得到正确答案 。但是当product_tb表中存在多个产品的inventory数量相同时,结果就会是错的。
select style_id,
round(sum(sales_num)/(sum(distinct inventory)-sum(sales_num))*100,2),
round(sum(sales_price)/sum(distinct((tag_price*inventory)))*100,2)
from product_tb
join sales_tb using(item_id)
group by style_id
SQL184 某宝店铺连续2天及以上购物的用户及其对应天数
本题类似于167题的算法,难点在于计算出连续的天数。
解题思路:首先对日期进行排序,其次判断连续日期,并查询统计连续天数>=2的用户即可
判断连续日期的方法:
第一步,对日期去重后进行排序(或者直接用dense_rank进行排序,这是因为dense_rank对于重复的日期,在排序上是相同的,如果是同一天,所以不用再考虑重复日期的影响);
第二步,日期减去排序对应序号的天数如果是一个相同的值,则说明这些日期就是连续的。
第三步,对连续的日期再次排序就得到了最大的连续数列。
判断连续日期,并查询统计连续天数>=2的用户的方法:
使用date_sub()函数并聚合后判断日期连续
如果sales_date 减去rk(天)是相同的日期,则说明他们这些天都是连续的日期(所以要使用dense_rank()并且对日期进行去重,不然重复的日期也会被记作连续的天数)。
count(1)和count()之间没有区别,因为count()count(1)都不会去过滤空值。但count(1)的计算效率要高于 count(*)
select user_id,
count(1) as days_count
from (select distinct sales_date,user_id,dense_rank()over(partition by user_id order by sales_date)rk FROM sales_tb)t1
group by user_id,
date_sub(sales_date,interval rk day)
HAVING count(1)>=2;
牛客SQL 大厂面试真题 某宝店铺分析 5套代码及解析相关推荐
- 牛客SQL大厂面试真题——出行场景(滴滴打车)
昨天我们学习了Mysql的函数,相信大家已经了解到差不多了,接下来跟随我利用牛客网的上的真题对我们学习成果进行检验吧! 上一期博客传送门:Mysql常用函数总结 文章目录 1.2021年国庆在北京接单 ...
- 牛客SQL 大厂面试真题 某东商城 6套代码及解析
3.电商场景(某东商城) SQL168 计算商城中2021年每月的GMV select date_format(event_time,'%Y-%m') as month, round(sum(tota ...
- 牛客SQL 大厂面试真题 某滴打车 6套代码及解析
4.出行场景(某滴打车) SQL174 2021年国庆在北京接单3次及以上的司机统计信息 where后面的时间一定要加上引号,否则会报不出结果. 如本段代码中的where date(order_tim ...
- mysql牛客刷题(SQL大厂面试真题)
文章目录 某音短视频 SQL1 各个视频的平均完播率 SQL2 平均播放进度大于60%的视频类别 SQL3 每类视频近一个月的转发量/率 SQL4 每个创作者每月的涨粉率及截止当前的总粉丝量 用户增长 ...
- SQL 大厂面试真题篇
01 某音短视频 某音短视频 SQL1 各个视频的平均完播率 描述: 用户-视频互动表tb_user_video_log id uid video_id start_time end_time i ...
- 【牛客刷题-SQL大厂面试真题】NO2.用户增长场景(某度信息流)
体系化学习SQL,请到牛客经典高频面试题库,参加实训,提高你的SQL技能吧~ https://www.nowcoder.com/link/pc_csdncpt_itbd_sql 文章目录 前言
- 牛客网SQL大厂面试真题(二)
SQL25 某宝店铺的SPU数量 SELECT style_id, COUNT(1) AS SPU_num FROM product_tb GROUP BY style_id ORDER BY SPU ...
- 牛客网SQL大厂面试真题(一)
SQL1 各个视频的平均完播率 SELECT log.video_id, ROUND(SUM(IF(TIMESTAMPDIFF(SECOND, log.start_time, log.end_time ...
- 牛客网 SQL大厂面试真题篇 SQL2 平均播放进度大于60%的视频类别
描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...
最新文章
- 成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内daiding
- leetcode 岛屿的个数
- 嵌入式linux 零基础-实践起步 --- 001 --- linux的版本
- UI设计灵感|插画在App设计中有哪些常用方式?
- python网络监控程序_python linux监控程序
- 一个key 在10w k/v 找到对应的. (B-tree), 这10w放进B-tree 会有多少层.
- 学习《华为基本法》(11):项目管理与审计制度
- 压力传感器的封装形式
- Linux服务器建立IP隧道,变更访问出口
- Spring Environment全解析
- 燃烧的远征_从菜鸟通往java世界的修炼之路
- 各类开发生产环境缩写
- 机器学习 AI 谷歌ML Kit 与苹果Core ML
- C语言字符和数字相互转换(适用于0-9这10个数字)
- IPsec:IKEv1和IKEv2区别
- GEE——2018 年南非国家土地覆盖( 20 米分辨率多季节 Sentinel 2 卫星图像生成的)
- python爬app西瓜视频_Python爬虫下载西瓜视频
- vscode中输入的中文变繁体的问题
- 使用bootstrap框架快速开发网页
- 如何通过纯javascript实现表单提交
热门文章
- uni-app项目起步
- 怎么将计算机图标放到桌面,win10怎么把计算机图标放到桌面
- 计算机视觉动画视频插帧难点、流程及改进
- ContraD论文部分翻译与解读(Training GANs with Stronger Augmentations via Contrastive Discriminator)
- stm32 + ESP8266 wifi获取网络时间和天气 stm32天气预报
- 2016年,续航新能量
- 每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
- 《Hive编程指南》阅读笔记
- 力扣算法题-19.秋叶收藏集 C语言实现
- 【总结】初创公司用AWS搭建高扩展性架构