每天一道大厂SQL题【Day02】

news2024/9/23 5:35:39

每天一道大厂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,MySQL8.0,即大数据组件,其他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;

后记

📢博客主页:https://manor.blog.csdn.net

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12182595.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nuxt.js项目搭建

nuxt[文档数据] https://www.xuanmo.xin/details/3240 nuxt文档:https://zhuanlan.zhihu.com/p/76703748 nuxt文档:https://www.cnblogs.com/chanwahfung/p/12899714.html axios:https://axios.nuxtjs.org/ 参考:https://www.w3cschool.cn/nuxtjs/nuxtjs-b4kl36fw.html 案例实现…

编程的GCRoot应该怎么去找?

本文导读 本文通过抛出一个编程的上帝视角问题,我们了解什么是编程的上帝视角,编程如何学习以及编程的root是什么,找到root之后,我们有如何利用上帝视角去解决编程中的推理。 一、编程的上帝视角 上帝视角乃是叙述视角中&#…

23.网络编程(一)

目录 一.网络编程 1.1 什么是网络编程 1.2 网络通信基本模式 1.3 网络通信三要素 1.4 IP地址 1.4.1 什么是IP地址 1.4.2 IP的常见分类 1.4.3 IP地址基本寻路 1.4.4 IP地址形式 1.4.5 IP常用命令(在命令提示符窗口中使用) 1.4.6 特殊IP地址 1…

Docker安装Postgresql

测试环境:Centos7.x docker1.13.1 postgres12本文使用的是在镜像仓库直接pull的方式,非Dockfile的方式。Postgresql的Dockerfile参考:https://github.com/docker-library/postgres/blob/master/12/alpine/Dockerfile常用命令docker命令大全…

MySQL的卸载

步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。右击“此电脑“,选择”管理“,可以在“服务”列表找到“MySQL8.0”的服务,如果现在“正在运行”状态,可以右键单击服务,选择“停止”选…

java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Kafka【Kafka的概念、单机及集群部署】~整起

Rust一、Kafka基本概念1.Kafka是什么?Kafka与Flume?2.Kafka的整体架构:3.kafka的生产者与消费者:4.kafka的Topic与日志、分区【分区可以提高咱们kafka的写入能力和存储能力】5.kafka的顺序写入:6.kafka的零拷贝技术7.k…

MQ 队列消息

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,通过提供消息传递和消息排队模型,它可以在分布式环境下拓展进程间的通信,对于消息中间件,常见的角色大致也就有Producer(生产者).Consumer(消费者) MQ 消息中间件 消息队列 …

【数据结构基础】树 - 基础和Overview

知识体系结构树树是一种数据结构,它是n(n>0)个节点的有限集。n0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:n>0时,根节点是…

Linux嵌入式开发——文件权限

文章目录Linux嵌入式开发——文件权限文件权限文件权限管理修改文件权限修改文件所属用户拥有者拥有者组Linux嵌入式开发——文件权限 文件权限 文件权限是指不同的用户或用户组对某个文件拥有的权限,文件的权限分为三种,并且可以使用二进制表示文件权…

kerberos环境下parcel方式部署flink1.15.3 基于CDH6.3.2 Flink on Yarn

1.1 Flink on Yarn的优势相对于 Standalone 模式,在Yarn 模式下有以下几点好处:1.资源按需使用,提高集群的资源利用率;2.任务有优先级,根据优先级运行作业;3.基于 Yarn 调度系统,能够自动化地处…

通信原理笔记—模拟信号的数字编码

目录 低通与带通信号的抽样定理: 模拟信号数字编码的基本概念: 模拟信号的抽样: 低通信号的理想抽样: 低通采样定理: 采样方式: 冲激采样示例: 低通信号的自然抽样: 带通抽样…

正版授权|Charles 4 网络封包分析调试工具软件

Charles 4 是一款 HTTP 代理 /HTTP 监视器/反向代理,使开发人员能够查看其机器和 Internet 之间的所有 HTTP 和 SSL / HTTPS流量。这包括请求、响应和 HTTP 标头(包含 Cookie 和缓存信息)。 授权分类:单许可证 站点许…

Python程序设计-第2章Python程序语句

第2章Python程序语句一.预习笔记 1.1 if语句 if 条件 : 执行语句 注意:条件后面要有 : 号,其次条件不需要括号包裹,然后执行语句需要有缩进 1.2 if else语句 if 条件 : 执行语句1 else : 执行语句2 注意:条件成立执行语…

Vue3中使用Tinymce富文本编辑器(版本最新)

使用目录前言一、安装方法一(npm、yarn下载)二、安装方法二(下载官网压缩包方法)——推荐总结前言 最近使用了WangEditor编辑器和Tinymce编辑器,使用方法如下(采用的编辑器版本是官网最新的) 汉…

@Configuration 和 @Component 区别

本文参考1:https://blog.csdn.net/isea533/article/details/78072133 本文参考2:https://blog.csdn.net/weixin_52850476/article/details/124410800 一句话概括就是 Configuration 中所有带 Bean 注解的方法都会被动态代理,因此调用该方法…

数据库密码定期轮换(AWS版)

问题 需要定期轮换AWS上面的RDS数据库的密码,而且,需要让业务程序无感知。 思路 AWS有个一个aws-secretsmanager-jdbc库,只要在SpringBoot的基础上面集成即可,就可以使用secrets manager来定期轮换数据库的密码了。 解决步骤 …

Excel VBA 讲座05 - InputBox和MsgBox使用

本篇介绍的内容: 1,当用户使用宏或procedure时,使用InputBox来接收或收集用户输入的信息。 2,根据需求使用IF语句构建逻辑。 3,使用Message Box将信息展示给用户,比如用户输出错误,就提示用户…

np.loadtxt()读取数据

前言 机器学习中使用np.loadtxt()可以高效的导入数据,np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1.np.loadtxt()读取txt文件 1-1 基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, skiprows0, usecol…

uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权

效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== 【APP支付宝登录】 https://opendocs.alipay.com/open/218/105325 【网站支付宝登录】

PMP证书有什么用?

有没有用看你的考证目的,总的来说就是敲门砖的作用,项目招聘、应聘项目经理都需要pmp 证书。⭕但是事在人为,祈祷考完 PMP 就能升职加薪走上人生巅峰的想法,一纸证书是做不到的。PS:身边有考了 PMP 之后跳槽薪资涨幅 3…