当前位置: 首页 > news >正文

每天一道大厂SQL题【Day01】

每天一道大厂SQL题【Day01】

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

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

先来10道HiveSQL题:

第1题:访问量统计

需求

我们有如下的用户访问数据

在这里插入图片描述

要求使用SQL统计出每个用户的累积访问次数,如下表所示:

用户id 月份 小计 累积
在这里插入图片描述

如何实现?

数据准备

CREATE TABLE test_sql.test1 (
userId string, visitDate string, visitCount INT )
ROW format delimited FIELDS TERMINATED BY "\t"; 
INSERT INTO TABLE test_sql.test1
VALUES
( 'u01', '2017/1/21', 5 ),
( 'u02', '2017/1/23', 6 ),
( 'u03', '2017/1/22', 8 ),
( 'u04', '2017/1/20', 3 ),
( 'u01', '2017/1/23', 6 ),
( 'u01', '2017/2/21', 8 ),
( 'u02', '2017/1/23', 6 ),
( 'u01', '2017/2/22', 4 );

思路分析tips

首先可以使用SQL的GROUP BY语句对用户ID和月份进行分组,然后使用SUM函数统计每组的访问次数。之后再使用SQL的Window函数,如sum() over()进行累积计算,并输出累积访问次数。最后按照用户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

相关文章:

  • 【JAVA核心知识】46:什么是零拷贝Zero-copy
  • Spring和Spring Boot的区别
  • 初始网络编程
  • 数据分析:SQL和Python
  • 我建议大学生看一下阿凡达2,对离校后很有帮助
  • 单片机开发---ESP32S3移植lvgl+触摸屏
  • 【网络安全】记一次红队渗透实战项目
  • 网络安全协议
  • 数据结构(括号匹配与表达式计算)
  • 【Linux】冯诺依曼体系结构
  • element 日期组件实现只能选择小时或者只能选择小时、分钟
  • 【寒假小练】day2
  • 指针(基础)
  • 新来测试用一手Postman实现UI自动化测试拿下了大厂面试官
  • 实时即未来,大数据项目车联网之驾驶行程采样实时分析【十七】
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • Angularjs之国际化
  • css的样式优先级
  • CSS中外联样式表代表的含义
  • JS专题之继承
  • nodejs实现webservice问题总结
  • Otto开发初探——微服务依赖管理新利器
  • PAT A1017 优先队列
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 大型网站性能监测、分析与优化常见问题QA
  • 工作中总结前端开发流程--vue项目
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务入门【系列视频课程】
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​油烟净化器电源安全,保障健康餐饮生活
  • (4)Elastix图像配准:3D图像
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (搬运以学习)flask 上下文的实现
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一)基于IDEA的JAVA基础10
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • ***详解账号泄露:全球约1亿用户已泄露
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .Family_物联网
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net反混淆脱壳工具de4dot的使用
  • @Autowired 与@Resource的区别
  • []常用AT命令解释()
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [AAuto]给百宝箱增加娱乐功能
  • [Asp.net mvc]国际化
  • [Assignment] C++1
  • [autojs]逍遥模拟器和vscode对接
  • [C#]扩展方法
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh