每天一道大厂SQL题【Day02】

大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题,以每日1题的形式,带你过一遍热门SQL题并给出恰如其分的解答。

一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!

每日鸡汤:

你必须非常努力,才能看起来毫不费力。

第2题:电商场景TopK统计

需求

有50W个京东店铺,每个顾客访客访问任何一个店铺的任何一个商品时都会产生一条访问日志, 访问日志存储的表名为Visit,访客的用户id为user_id,被访问的店铺名称为shop,数据如下:

请统计:
(1)每个店铺的UV(访客数)
(2)每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数
实现

数据准备

CREATE TABLE test_sql.test2 (
user_id string, shop string )
ROW format delimited FIELDS TERMINATED BY '\t';
INSERT INTO TABLE test_sql.test2 VALUES ( 'u1', 'a' ),
( 'u2', 'b' ),
( 'u1', 'b' ),
( 'u1', 'a' ),
( 'u3', 'c' ),
( 'u4', 'b' ),
( 'u1', 'a' ),
( 'u2', 'c' ),
( 'u5', 'b' ),
( 'u4', 'b' ),
( 'u6', 'c' ),
( 'u2', 'c' ),
( 'u1', 'b' ),
( 'u2', 'a' ),
( 'u2', 'a' ),
( 'u3', 'a' ),
( 'u5', 'a' ),
( 'u5', 'a' ),
( 'u5', 'a' );

思路分析

1 每个店铺的UV(访客数)
使用 SQL 或者其他数据库查询语言进行统计。
先通过 group by 按店铺名称进行分组,然后使用 count(distinct user_id) 计算每个店铺的访客数。
2 每个店铺访问次数top3的访客信息
使用 SQL 或者其他数据库查询语言进行统计。
先通过 group by 按店铺名称和用户id进行分组,然后使用 count(*) 计算每个用户在每个店铺的访问次数。
使用 order by 对访问次数进行排序,然后使用 limit 3 限制输出的数量。
输出店铺名称、访客id、访问次数。

答案获取

建议你先动脑思考,动手写一写再对照看下答案,如果实在不懂可以点击下方卡片,回复:大厂sql 即可。
参考答案适用HQL,SparkSQL,FlinkSQL,即大数据组件,其他SQL需自行修改。

加技术群讨论

点击下方卡片关注 联系我进群

或者直接私信我进群

文末SQL小技巧

提高SQL功底的思路。
1、造数据。因为有数据支撑,会方便我们根据数据结果去不断调整SQL的写法。
造数据语法既可以create table再insert into,也可以用下面的create temporary view xx as values语句,更简单。
其中create temporary view xx as values语句,SparkSQL语法支持,hive不支持。
2、先将结果表画出来,包括结果字段名有哪些,数据量也画几条。这是分析他要什么。
从源表到结果表,一路可能要走多个步骤,其实就是可能需要多个子查询,过程多就用with as来重构提高可读性。
3、要由简单过度到复杂,不要一下子就写一个很复杂的。
先写简单的select * from table…,每个中间步骤都执行打印结果,看是否符合预期, 根据中间结果,进一步调整修饰SQL语句,再执行,直到接近结果表。
4、数据量要小,工具要快,如果用hive,就设置set hive.exec.mode.local.auto=true;如果是SparkSQL,就设置合适的shuffle并行度,set spark.sql.shuffle.partitions=4;

后记

每天一道大厂SQL题【Day02】电商场景TopK统计相关推荐

  1. 每天一道大厂SQL题【Day03】订单量统计

    每天一道大厂SQL题[Day03]订单量统计 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典 ...

  2. 每天一道大厂SQL题【Day06】电商购买金额统计实战

    每天一道大厂SQL题[Day06]电商购买金额统计实战 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面 ...

  3. 每天一道大厂SQL题【Day01】

    每天一道大厂SQL题[Day01] 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典题,以每日 ...

  4. 每天一道大厂SQL题【Day11】微众银行真题实战(一)

    每天一道大厂SQL题[Day11]微众银行真题实战(一) 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗 ...

  5. 每天一道大厂SQL题【Day14】微众银行真题实战(四)

    每天一道大厂SQL题[Day14]微众银行真题实战(四) 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗 ...

  6. 每天一道大厂SQL题【Day17】腾讯外包(微信相关)真题实战(二)

    每天一道大厂SQL题[Day17]腾讯外包(微信相关)真题实战(二) 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间, ...

  7. 每天一道大厂SQL题【Day25】脉脉真题实战(一)每日活跃用户

    文章目录 每天一道大厂SQL题[Day25]脉脉真题实战(一)每日活跃用户 每日语录 第25题: 1. 需求列表 1. 初级题: 每日活跃用户 思路分析 (1) 创建表 (2) 思路 答案获取 加技术 ...

  8. 牛客网SQL刷题四-电商场景(某东商城)

    SQL13 计算商城中2021年每月的GMV 数据 DROP TABLE IF EXISTS tb_order_overall; CREATE TABLE tb_order_overall (id I ...

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

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

最新文章

  1. MFC中“资源在另一个编译器中打开”报错解决方法
  2. java 集合 介绍_java集合类基本简介
  3. 牛客多校第六场 E Androgynos 自补图
  4. mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...
  5. 逆序数问题(归并排序,C++)
  6. Wince5.0自定义工具条
  7. 虚拟机开启以后电脑非常卡_专主开VT电脑版手机安卓模拟器开启VT 模拟器开启VT 虚拟机打开VT...
  8. 将 SharePoint 开发与其他形式的开发进行比较
  9. java组合框的事件有哪些_博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理...
  10. 函数调用中的参数太多_函数调用
  11. springcloud工作笔记094---springcloud项目后端验证_hibernate validator后端校验字段_介绍了解
  12. Atitit 现代信息检索 Atitit 重要章节 息检索建模 检索评价 第8章 文本分类 Line 210: 第9章 索引和搜索 第11章 Web检索 第13章 结构化文本检索 目录 L
  13. Laravel框架和TP框架区别
  14. 我找遍全网,整理了1份纯新手向电脑购机&装机攻略!
  15. 软考网络规划设计师知识点总结--第一章(计算机网络概论)
  16. gc日志一般关注什么_理解GC日志
  17. leafnotification_Notification Service
  18. 唇语识别!AI 领域的下一个万亿市场?
  19. PASCAL VOC DATASET
  20. 龙翔集团牵头起草全国首个月子中心服务等级划分团体标准开始实施

热门文章

  1. 3.3V降压1.2V,3V降压1.2V电源芯片和LDO选型表
  2. linux端口 fcs校验,linux – 如何接收错误的以太网帧并禁用CRC / FCS计算?
  3. 天刀助手APP自动押镖脚本
  4. python 自动编写新闻_Python多篇新闻自动采集
  5. 剑指Offer面试题:6.旋转数组中的最小数字
  6. 趣学算法之分枝限界法
  7. 【笔记】NAC配置过程
  8. 画一个清晰明了的时序图,要掌握这三点
  9. django校园宿舍管理系统-计算机毕设 附源码84831
  10. java中onclick的用法,使用jQuery修改onclick函数