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 某宝店铺折扣率

  1. 题目中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 某宝店铺动销率与售罄率

  1. 第一次是这么写的,但是结果都偏小。 原因是:库存表与销售表连接之后对应的每条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
  1. 下面是正确的写法,先通过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
  1. 通过对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天及以上购物的用户及其对应天数

  1. 本题类似于167题的算法,难点在于计算出连续的天数。

  2. 解题思路:首先对日期进行排序,其次判断连续日期,并查询统计连续天数>=2的用户即可

  3. 判断连续日期的方法:
    第一步,对日期去重后进行排序(或者直接用dense_rank进行排序,这是因为dense_rank对于重复的日期,在排序上是相同的,如果是同一天,所以不用再考虑重复日期的影响);
    第二步,日期减去排序对应序号的天数如果是一个相同的值,则说明这些日期就是连续的。
    第三步,对连续的日期再次排序就得到了最大的连续数列。

  4. 判断连续日期,并查询统计连续天数>=2的用户的方法:
    使用date_sub()函数并聚合后判断日期连续
    如果sales_date 减去rk(天)是相同的日期,则说明他们这些天都是连续的日期(所以要使用dense_rank()并且对日期进行去重,不然重复的日期也会被记作连续的天数)。

  5. 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套代码及解析相关推荐

  1. 牛客SQL大厂面试真题——出行场景(滴滴打车)

    昨天我们学习了Mysql的函数,相信大家已经了解到差不多了,接下来跟随我利用牛客网的上的真题对我们学习成果进行检验吧! 上一期博客传送门:Mysql常用函数总结 文章目录 1.2021年国庆在北京接单 ...

  2. 牛客SQL 大厂面试真题 某东商城 6套代码及解析

    3.电商场景(某东商城) SQL168 计算商城中2021年每月的GMV select date_format(event_time,'%Y-%m') as month, round(sum(tota ...

  3. 牛客SQL 大厂面试真题 某滴打车 6套代码及解析

    4.出行场景(某滴打车) SQL174 2021年国庆在北京接单3次及以上的司机统计信息 where后面的时间一定要加上引号,否则会报不出结果. 如本段代码中的where date(order_tim ...

  4. mysql牛客刷题(SQL大厂面试真题)

    文章目录 某音短视频 SQL1 各个视频的平均完播率 SQL2 平均播放进度大于60%的视频类别 SQL3 每类视频近一个月的转发量/率 SQL4 每个创作者每月的涨粉率及截止当前的总粉丝量 用户增长 ...

  5. SQL 大厂面试真题篇

    ​ 01 某音短视频 某音短视频 SQL1 各个视频的平均完播率 描述: 用户-视频互动表tb_user_video_log id uid video_id start_time end_time i ...

  6. 【牛客刷题-SQL大厂面试真题】NO2.用户增长场景(某度信息流)

    体系化学习SQL,请到牛客经典高频面试题库,参加实训,提高你的SQL技能吧~ https://www.nowcoder.com/link/pc_csdncpt_itbd_sql 文章目录 前言

  7. 牛客网SQL大厂面试真题(二)

    SQL25 某宝店铺的SPU数量 SELECT style_id, COUNT(1) AS SPU_num FROM product_tb GROUP BY style_id ORDER BY SPU ...

  8. 牛客网SQL大厂面试真题(一)

    SQL1 各个视频的平均完播率 SELECT log.video_id, ROUND(SUM(IF(TIMESTAMPDIFF(SECOND, log.start_time, log.end_time ...

  9. 牛客网 SQL大厂面试真题篇 SQL2 平均播放进度大于60%的视频类别

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

最新文章

  1. 成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内daiding
  2. leetcode 岛屿的个数
  3. 嵌入式linux 零基础-实践起步 --- 001 --- linux的版本
  4. UI设计灵感|插画在App设计中有哪些常用方式?
  5. python网络监控程序_python linux监控程序
  6. 一个key 在10w k/v 找到对应的. (B-tree), 这10w放进B-tree 会有多少层.
  7. 学习《华为基本法》(11):项目管理与审计制度
  8. 压力传感器的封装形式
  9. Linux服务器建立IP隧道,变更访问出口
  10. Spring Environment全解析
  11. 燃烧的远征_从菜鸟通往java世界的修炼之路
  12. 各类开发生产环境缩写
  13. 机器学习 AI 谷歌ML Kit 与苹果Core ML
  14. C语言字符和数字相互转换(适用于0-9这10个数字)
  15. IPsec:IKEv1和IKEv2区别
  16. GEE——2018 年南非国家土地覆盖( 20 米分辨率多季节 Sentinel 2 卫星图像生成的)
  17. python爬app西瓜视频_Python爬虫下载西瓜视频
  18. vscode中输入的中文变繁体的问题
  19. 使用bootstrap框架快速开发网页
  20. 如何通过纯javascript实现表单提交

热门文章

  1. uni-app项目起步
  2. 怎么将计算机图标放到桌面,win10怎么把计算机图标放到桌面
  3. 计算机视觉动画视频插帧难点、流程及改进
  4. ContraD论文部分翻译与解读(Training GANs with Stronger Augmentations via Contrastive Discriminator)
  5. stm32 + ESP8266 wifi获取网络时间和天气 stm32天气预报
  6. 2016年,续航新能量
  7. 每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
  8. 《Hive编程指南》阅读笔记
  9. 力扣算法题-19.秋叶收藏集 C语言实现
  10. 【总结】初创公司用AWS搭建高扩展性架构