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

news2024/11/24 17:06:47

文章目录

  • 每天一道大厂SQL题【Day25】脉脉真题实战(一)每日活跃用户
    • 每日语录
    • 第25题:
      • 1. 需求列表
      • 1. 初级题: 每日活跃用户
    • 思路分析
      • (1) 创建表
      • (2) 思路
    • 答案获取
    • 加技术群讨论
    • 附表
      • 文末SQL小技巧
    • 后记

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

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

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

每日语录

C:\Users\ADMINI~1\AppData\Local\TemputoolsDoutuPlugin/tempImage1686573886875.gif

学习!还是他娘地学习!

第25题:

1. 需求列表

需求1:每日活跃用户

用户每日登陆脉脉会访问app不同的模块,

现有两个表 表1记录了每日脉脉活跃用户的uid和不同模块的活跃时长表2记录了脉脉所有注册用户的一些属性

1. 初级题: 每日活跃用户

  1. 九月中,每日活跃的用户数

  2. 九月中,对于每日活跃用户,其当日活跃时长最大的模块

  3. 十一期间的活跃用户中,jobs模块活跃超过100s的用户

思路分析

(1) 创建表

– 表1 dau 记录了每日脉脉活跃用户的uid和不同模块的活跃时长

create or replace temporary view dau(d, uid, module, active_duration) as

values (‘2020-01-01’, 1, ‘jobs’, 324),

(‘2020-01-01’, 2, ‘feeds’, 445),

(‘2020-01-01’, 3, ‘im’, 345),

(‘2020-01-02’, 2, ‘network’, 765),

(‘2020-01-02’, 3, ‘jobs’, 342);

– 表2 users 脉脉所有用户得一些注册属性

create or replace temporary view users(uid, career_level, city, work_length) as

values (1, ‘中级人才’, ‘北京’, 4),

(2, ‘高级人才’, ‘上海’, 7),

(3, ‘初级人才’, ‘北京’, 1),

(4, ‘普通人才’, ‘平顶山’, 2);

(2) 思路

  1. 九月中,每日活跃的用户数

我们可以使用SQL语句来查询每日活跃的用户数。首先,我们需要筛选出九月份的数据,然后按日期分组,最后计算每组中不同用户的数量。

  1. 九月中,对于每日活跃用户,其当日活跃时长最大的模块

我们可以使用SQL语句来查询每日活跃用户当日活跃时长最大的模块。首先,我们需要筛选出九月份的数据,然后按日期和用户分组,最后计算每组中活跃时长最大的模块。

  1. 十一期间的活跃用户中,jobs模块活跃超过100s的用户

我们可以使用SQL语句来查询十一期间jobs模块活跃超过100s的用户。首先,我们需要筛选出十一期间jobs模块的数据,然后按用户分组,最后计算每组中活跃时长超过100s的用户。

答案获取

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

加技术群讨论

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

或者直接私信我进群

附表

表1:maimai.dau

duidmoduleactive_duration列说明
2020-01-011jobs324d: 活 跃 的 日 期 uid:用户的唯一编码module:用户活跃模块actre.duration:该模块下对应的活跃时长(单位:s)
2020-01-012feeds445
2020-01-013im345
2020-01-022network765
2020-01-023jobs342

表2:maimai.users

uidcareer_levelcitywork_length列说明
1中级人才北京4uid:用户的唯一编码career level:人才级别
2高级人才上海7
3初级人才北京1city:用户所在城市work_length:用户工作年限
4普通人才平顶山2

文末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/639308.html

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

相关文章

【React】路由,Hooks

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 路由Navigate导航组件 路由的嵌套useNavigate路由传递参数route配置抽取 路由 通过Link组件就可…

AntDB 事务机制

全局一致性 AntDB 的集群架构包括,一个 GTM(Global Transaction Manager)、多个Coordinator(CN)、多个 Datanode(DN)。其中 GTM 负责给其他的 DN 和CN 分发集群全局唯一的事务号和集群当前判断…

QT--配置Opencv

提示:本文为学习记录,若有疑问,请及时联系作者。 文章目录 前言一、下载已编译的opencv1..解压2..path路径 二、使用步骤1..pro文件2..h文件 总结 前言 只做第一个我,不做第二个谁。 一、下载已编译的opencv 适用于mingw编译器…

如何学习数据结构与算法? - 易智编译EaseEditing

学习和提升数据结构与算法的能力可以通过以下几个步骤: 学习基础知识: 了解数据结构和算法的基本概念和原理,包括常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、图算法等&#…

GreenPlum监控工具GPCC部署

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Fiddler抓包工具之fiddler的命令行窗口用法

fiddler的命令行窗口的相关命令 在fiddler官网有QuickExec使用教程,地址是http://docs.telerik.com/fiddler/knowledgebase/quickexec QuickExec 命令行窗口位于fiddler左下角黑色输入框,如下图: 按ALT Q,将焦点快速设置到Quic…

initramfs 最全解释与制作

先提几个问题: 0、什么是 initrd 和 initramfs? 概述 现代Linux系统都使用到了一种功能比较特殊的微型系统,作为Linux内核初始化完成但未进入最终系统时的过渡系统,主要的目的是为了将最终系统载入到根文件系统上,辅…

这个618,网工最值得买的路由器/交换机设备

大家好,我是老杨。 有小友最近扎堆冒出来问我,企业要采购路由器/交换机,买啥牌子好,买啥型号好。 又或者是,家里要买家用的路由器/电脑,啥性价比最高? 我真的很想吐槽一句,你们再问…

敏捷软件测试常见的七个误区

敏捷软件开发是从1990年代开始逐渐引起广泛关注的一种新型软件开发方法,是能够应对快速变化的需求的一种软件开发能力,它作为一种新型的开发模式,被越来越多地应用到软件项目中。 敏捷软件测试指的是在敏捷软件开发过程中跟质量相关的一系列…

Appium+Python3环境搭建,其实超简单!

appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python。略懂Python,所以接下来的教程是appiumpython,自己搭建环境的时候,按照某些博客安装遇到各种奇葩问题&am…

【新版】系统架构设计师 - 嵌入式技术

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 嵌入式技术考点摘要嵌入式系统嵌入式系统开发与设计交叉开发环境软硬件协同设计嵌入式软件移植低功耗设计 嵌入式硬件嵌入式微处理器人工智能芯片微处理器体系结构 嵌入式操作系统(EOS…

大涨39.9%!连续三季度蝉联全球第三,联想服务器做对了什么?

市场调查公司IDC最新发布的2023年第一季度x86服务器全球市场追踪报告显示,联想集团当季实现了39.9%的大幅增长、市场份额连续三季度蝉联全球第三,而全球排名前五厂商中戴尔下降25.1%、HPE微涨0.6%、浪潮下降38.7%、超微(Super Micro&#xff…

考友经验分享——考研英语怎么答题

(注:我的英语一般,这是其他人的考研英语经验,仅供参考,要早日找到适合自己的方法!) 管卫东老师的《管卫东的考研英语阅读最后冲刺阅读突破——技巧与总结》,觉得收获不小&#xff0…

python工具方法 41 对VOC|YOLO格式的数据进行resize操作

在目标检测中,相比于yolo格式,voc格式和coco格式都使用绝对值描述boxes的size,这在多数据集融合时存在一定的缺陷。尤其是在存在超高清影像中(在数据集中存在超高清影像通常会使dataloader内存不够用,或导致数据加载卡顿),我们不能仅对图像进行resize操作(还需要同时对…

软件测试基础知识必备之浅谈单元测试

什么是单元测试? 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。 单元测试都是以自动化的方式执行,所以在大量回归测试的场景下更能带来…

Docker consul的容器

consul服务更新和服务发现 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&…

Android Studio实现简单的页面跳转(简单教程)

项目实现:(实现Android Studio 基本有两种实现方式:一种为.MainActivity跳转;第二种是Relatelayout布局跳转。 这里着重介绍第一种:(首先需要建立两个XML文件,进行布局的相互的跳转,然后使用两个JAVA进行相…

一文讲透!实现一个Python+Selenium的自动化测试框架如此简单!

首先你得知道什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1…

低代码崛起:会让程序员饭碗不保,人工智能或成其催化剂

人工智能技术目前发展的趋势如何 关于人工智能技术的评价,大众的评价几乎算是较为一致的,都认为其已成为人类有史以来最具革命性的技术之一。当然了,可能目前的我们还是很难想象机器自主决策所产生的影响,但可以肯定的是&#xff…

离散传递函数实现(滤波器实现)

GPT讲挺好: 离散传递函数的一般形式为: G ( z ) b 0 z n b 1 z ( n − 1 ) . . . b n a 0 z n a 1 z ( n − 1 ) . . . a m G(z)\frac{b_0z^n b_1z^{(n-1)} ... b_n}{a_0z^{n} a_1z^{(n-1)} ... a_m} G(z)a0​zna1​z(n−1)...am​b0​znb…