![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HiveSql面试题
文章平均质量分 65
莫叫石榴姐
云淡风轻一轮江月明
展开
-
一种通过构建周期快照事实表优化用户回流、流失统计指标的方法
本文分析了一种通过数仓建模的形式来优化指标计算的方式,针对用户回流及流失这两个指标进行优化,通过对指标的分析,在DWS层构建周期快照事实表,维护用户历史至今末次登录时间周期快照表,简化了指标的计算,提升了性能。原创 2023-02-03 10:59:36 · 828 阅读 · 2 评论 -
HiveSQL高级进阶技巧,掌握这10个技巧,你的SQL水平将有一个质的提升!
HiveSQL高级进阶技巧,掌握这10个技巧,你的SQL水平将有一个质的提升!原创 2023-01-30 15:35:26 · 1088 阅读 · 1 评论 -
SQL面试题之区间合并问题
本题为区间合并问题,问题比较经典,判断的核心思路是构造条件:当前行的起始时间原创 2022-09-02 18:10:26 · 2336 阅读 · 8 评论 -
HiveSql面试题56:即时订单比例问题
HiveSql面试题56:即时订单比例问题原创 2022-05-22 19:19:00 · 981 阅读 · 2 评论 -
HQL面试题55:阿里最新面试题之地铁站用户行为轨迹分析
HQL面试题55:阿里最新面试题之地铁站用户行为轨迹分析原创 2022-05-21 17:22:15 · 1077 阅读 · 2 评论 -
HiveSql一天一个小技巧:如何成对提取字符串内容
本文给出了一种如何成对提取字符串内容技巧和方法,主要利用posexplode()函数进行求解,利用索引值相等提取出对应的字段内容。原创 2022-05-04 18:51:35 · 1584 阅读 · 1 评论 -
HiveSql面试题:连续签到领金币问题【百度-困难题-通用解法】
本文给出了一种连续签到领取金币的一种通用解法,通过窗口函数生成标签值进行辅助计算原创 2022-05-04 00:55:13 · 2463 阅读 · 5 评论 -
HIveSQL面试题52:近一个月发布的视频中热度最高的top3视频【抖音面试题,不得不去吐槽的一个题目】
这道题源自于牛客网,题目本身没什么难度,但在牛客中通过率极低,原因是题目本身但表达很模糊,很多定义没有直接给出,靠面试者猜,造成了误解,如果面试遇到这种题目90%挂,因为你不能准确理解题意,需要反复和面试官确认,即使做出来了,最终也是失败,而这题竟然出自抖音,面试出题也太随意了,无力吐槽,看来面试有时候真的靠缘分,哈哈哈。。。。原创 2022-04-17 13:15:03 · 1414 阅读 · 0 评论 -
HiveSql一天一个小技巧:如何在表的特定位置添加字段
hive表在某个特定的位置添加一个字段,在操作上是先在表的最后添加一个字段然后再将该字段移动到那个特定的位置第一步:先在最后一个位置增加字段alter table table_name add columns now_time string comment '当前时间';第二步:通过移动位置的指令移动到指定位置alter table table_name change now_time now_time string after id;Hive整体更改指令ALTER TAB.原创 2022-04-15 15:02:48 · 5426 阅读 · 1 评论 -
HiveSql一天一个小技巧:如何不借助其他任何外表,产生连续数值
0 需求描述输出结果如下所示:12345...1001 问题分析方法一:起始值(start)+步长(diff)=结束值(end)select split(space(5), ' ')+----------------------+| _c0 |+----------------------+| ["","","","","",""] |+----------------------+select posexplode(spl原创 2022-04-12 22:35:04 · 1566 阅读 · 0 评论 -
HiveSQL一天一个小技巧:借助于聚合函数与case when进行行转列
0 需求目标结果表1 数据准备创建原始数据表,加载数据 --切换数据库 use db_function; --建表create table row2col1( col1 string, col2 string, col3 int) row format delimited fields terminated by '\t'; --加载数据到表中load data local inpath '/export/data/r...原创 2022-03-20 22:19:12 · 1323 阅读 · 1 评论 -
HiveSQL一天一个小技巧:借助于join进行行转列
SQL如下:select tmp1.id as id,tmp1.value as height,tmp2.value as weight,tmp3.value as age from (select id,label,value from tmp2 where label = 'heit') as tmp1joinon tmp1.id = tmp2.id(select id,label,value from tmp2 where label = 'weit') as tmp2joino原创 2022-03-20 22:08:04 · 452 阅读 · 0 评论 -
HQL一天一个小技巧:coalesce和nvl函数区别
coalesce 函数COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n),n>=2,此表达式的功能为返回第一个不为空的表达式,如果都为空则返回空值。注意:所有表达式必须为同一类型或者能转换成同一类型。CREATE OR REPLACE VIEW v ASSELECT NULL AS C1, NULL AS C2, 1 AS C3, NULL AS C4, 2 AS C5, NULL AS C6 FROM tmpUNION ALLSELECT NUL.原创 2022-01-04 14:19:07 · 5835 阅读 · 0 评论 -
HiveSQL一天一个小技巧:使用TextFile格式可以直接使用gzip或bzip2压缩
数据压缩存储可以将使用Gzip或Bzip2压缩的文本文件直接导入存储为TextFile的表中。压缩将被自动检测到,并且文件将在查询执行期间实时解压缩. 例如: CREATE TABLE raw (line STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; LOAD DATA LOCAL INPATH '/tmp/weblogs/20090603-acc...原创 2021-11-29 11:00:38 · 2653 阅读 · 0 评论 -
SQL一天一个小技巧:如何通过HQL解析JSON
在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析。接下来就聊聊Hive中是如何解析json数据的。Hive自带的json解析函数1. get_json_object 语法:get_json_object(json_string, '$.key') 说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NUL转载 2021-09-02 18:42:33 · 2864 阅读 · 0 评论 -
你真的了解HiveSql吗?真实的HiveSql执行顺序是长这样的
通过上面的研究我们发现在hivesql中其执行顺序大致如下:from->where(谓词下推)->join->on->select(select中的字段与group by只要不一致就会有)->group by->select(为having准备数据,因而having中可以使用select别名)->having->select(过滤后的结果集)->distinct->select->order by ->select->limit实际上上述需要注意的是select在group by前和group by原创 2021-09-01 19:31:24 · 2026 阅读 · 1 评论 -
HQL一天一个小技巧:如何解决NULL值引发的数据倾斜
目录0 需求描述1 问题解决2 小结0 需求描述实际业务中有些大量的null值或者一些无意义的数据参与到计算作业中,表中有大量的null值,如果表之间进行join操作,就会有shuffle产生,这样所有的null值都会被分配到一个reduce中,必然产生数据倾斜。1 问题解决(1)问题剖析疑问:NULL值和需要匹配的字段根本就匹配不上,为什么会进入到同一个reduce?数据放到同一个reduce中的原因不是因为字段能不能join上,而是因为shuffle阶段的数据分发操作原创 2021-08-31 11:32:50 · 1367 阅读 · 4 评论 -
SQL 向用户推荐好友喜欢的音乐--HQL面试题49【腾讯】
0 问题描述问题描述:向用户 user_id = 1 推荐其关注的人喜欢的音乐有如下三个表:用户关注表 follow 用户喜欢的音乐 music_likes 音乐名字表 music1 数据分析create table follow( user_id int, follower_id int);insert into follow values (1,2);insert into follow values (1,4);insert into follo..原创 2021-08-23 22:00:32 · 1333 阅读 · 0 评论 -
SQL 之共同使用ip用户检测问题【自关联问题】-HQL面试题48【拼多多面试题】
0 问题描述create table log( uid char(10), ip char(15), time timestamp);insert into log valuesinsert into log values('a', '124', '2019-08-07 12:0:0'),('a', '124', '2019-08-07 13:0:0'),('b', '124', '2019-08-08 12:0:0'),('c', '124', '2019-0.原创 2021-08-23 18:46:20 · 903 阅读 · 0 评论 -
SQL 不及格课程数大于2的学生的平均成绩及其排名-HQL面试题47【拼多多】
0 问题描述create table scores( sid int, score int, cid int);insert into scores values(1, 90, 1),(1, 59, 2),(1, 67, 3),(2, 20, 1),(2, 30, 2),(2, 40, 3),(3, 14, 1),(3, 13, 2),(3, 15, 3),(4, 90, 1),(4, 90, 2),(4, 87, 3);1 数据分析...原创 2021-08-23 15:27:11 · 1062 阅读 · 7 评论 -
SQL 求连续段的最后一个数及每段的个数-HQL面试46【拼多多面试题】
0 问题描述有一个id表,要求输出连续段的最后一个id及每段的个数create table test( id int) row format ;insert into test values (1),(2),(4),(5),(6),(9),(10),(11),(12);原创 2021-08-23 13:02:01 · 739 阅读 · 2 评论 -
SQL之用户行为路径分析--HQL面试题46【拼多多面试题】
目录0 问题描述1 数据分析2 小结0 问题描述已知用户行为表 tracking_log, 大概字段有:(user_id 用户编号, op_id 操作编号, op_time 操作时间)要求:(1)统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻。 (2)统计用户行为序列为A-B-D的用户数其中:A-B之间可以有任何其他浏览记录(如C,E等),B-D之间除了C记录可以有任何其他浏览记录(如A,E等)1 数据分析(1)数据生成......原创 2021-08-22 21:51:29 · 2334 阅读 · 4 评论 -
SQL之定位连续区间的起始位置和结束位置--HQL面试题45【拼多多】
0 题目表:Logs+---------------+---------+| Column Name | Type |+---------------+---------+| log_id | int |+---------------+---------+id 是上表的主键。上表的每一行包含日志表中的一个 ID。后来一些 ID 从 Logs 表中删除。编写一个 SQL 查询得到 Logs 表中的连续区间的开始数字和结束数字。将查询表按照 start原创 2021-08-20 18:38:30 · 1322 阅读 · 0 评论 -
SQL之一天一个小技巧:测试一组数据中是否存在某个值
本文通过窗口函数对一组数据中是否存在某个值进行了分析,利用窗口函数构造辅助判断条件这一技巧解决此类问题,其中数值对齐采用了lpad()函数技巧。原创 2021-08-19 17:16:04 · 3038 阅读 · 0 评论 -
SQL之一天一个小技巧:如何使用HQL进行行值轮转
0 需求你想返回每个员工的姓名、工资,以及下一个比当前员工高和低的工资值。如果没有找到更高或更低的工资值,你希望结果集可以“折回”(第一个 SAL 的前一行是最后一个 SAL;反之,最后一个 SAL 的下一行即是第一个 SAL)。你希望返回如下所示的结果集。其实就是寻找比当前员工工资低及工资高的前后的工资值,如果遇到最高的工资或最低的工资则进行折回ENAME SAL FORWARD REWIND---------- ---------- --------原创 2021-08-15 15:16:09 · 360 阅读 · 0 评论 -
SQL一天一个小技巧:如何使用HQL遍历字符串
0 需求遍历字符串,并以一个字符一行的形式显示出来 如遍历"a,b,c,d,e,f"字符串,使其每个字符都生成一行记录1 数据分析在hive中为我们提供了强大的posexplode()函数,该函数对数组结构的数据进行行转列,并对数组中每一位都生成一个索引值.该函数强大之处就是为数组中每一位生成索引。因此我们可以利用该函数来生成字符串中的每一位的索引,达到遍历的效果。具体如下所示:select posexplode(split('a,b,c,d,e,f',','))结果如下:+原创 2021-08-13 19:37:26 · 954 阅读 · 0 评论 -
SQL一天一个小技巧:如何使用HQL统计字符串中字符的个数
0 需求统计在字符串"HELLO HELLO"中出现了多少个LL1 分析分析思路:(1) 用regexp_replace()函数将要计算的字符替换为''select regexp_replace("HELLO HELLO","LL",'')0: jdbc:hive2://10.9.4.117:10000> select regexp_replace("HELLO HELLO","LL",'');+----------+--+| _c0 |+----------.原创 2021-08-13 14:12:56 · 3368 阅读 · 0 评论 -
SQL之查找每个用户的受欢迎程度--HQL面试题43【Facebook面试题】
本题为Facebook面试题,本题的难点在于第一步分析的结果上,第一步分析结果的得出需要我们根据题意将可能结果等列出,这样我们自然而然就会想到union的方法。针对本题给出了两种方法一种采用常规思路关联的方法给出结果,一种采用窗口函数形式分析出结果,窗口函数分析方法在形式上更简洁一些。本题在用窗口函数分析结果时候采用size(collect_set())这一技巧,分析去重后的个数,在低版本的hive中如1.1是不支持count(distinct XXX) over()这种形式的,这一技巧需要注意和掌握。原创 2021-08-10 23:07:44 · 1146 阅读 · 0 评论 -
SQL之求第二高薪水-HQL面试题30
0 需求编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。+---------------------+| S...原创 2021-04-15 11:36:12 · 923 阅读 · 1 评论 -
HiveSql面试题11详解(count(1)、count(*)和count(列名)的区别)
- 如果列为主键,count(列名)效率优于count(1)- 如果列不为主键,count(1)效率优于count(列名)- 如果表中存在主键,count(主键列名)效率最优- 如果表中只有一列,则count(*)效率最优- 如果表有多列,且不存在主键,则count(1)效率优于count(*)原创 2020-09-02 09:49:19 · 3405 阅读 · 0 评论 -
HiveSQL面试题18--腾讯面试用户连续签到天数及历史最大连续签到天数问题
本题作为面试题,还是有一定难度,特别在比较紧张的环境下写出比较完备的SQL来是不容易的。本题第二问难度较高,要想写出来需要一定的技巧,但是如果看过我之前的SQL面试题的话,本题很容易想到按照某事件进行分桶的算法(如分桶重排序题目,HiveSql面试题8--分桶重排序问题2,链接https://blog.csdn.net/godlovedaniel/article/details/107234878?spm=1001.2014.3001.5502)此类题目在我的博客中比较多,这类问题其实只要理解了算法本质,可原创 2021-06-06 20:23:16 · 3178 阅读 · 3 评论 -
SQL之匹配填鸭问题【行转列问题】--HQL面试题40
本题实质上考察行转列问题,行转列在实际项目中经常使用,对于行转列求解,本文给出了两种方法,一种是经典的max(case when) 解法,一种是借助hive的collect_list()函数及array_contains()函数进行求解,两种解法各有千秋,希望读者熟练掌握。原创 2021-08-07 19:18:21 · 463 阅读 · 0 评论 -
SQL之存在性问题分析-HQL面试题39
本文对存在性问题进行了探讨和研究,此类问题往往需要对不同的记录做对比分析,我们可以先将符合条件的数据域按照collect_set()或collect_list()函数进行聚合转换成数组,然后获取历史的数据域放入当前行,最后利用hive中数组的相关处理手段进行对比分析。常用的hive数组处理函数如expode()、size()、array()、array_contains()等函数,本题就借助于hive ,array_contains()函数进行存在性问题分析。原创 2021-08-06 18:30:47 · 791 阅读 · 4 评论 -
SQL之获取积分最多的人--HQL面试题37
0 问题描述牛客每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。有一个用户表(user),简况如下:还有一个积分表(grade_info),简况如下:第1行表示,user_id为1的用户积分增加了3分。第2行表示,user_id为2的用户积分增加了3分。第3行表示,user_id为1的用户积分减少了1分。.......最后1行表示,user_id为3的用户积分减少了1分。请你写一个SQL查找积分最高的用户的id,名字,以及他的总积分是多少(可能.原创 2021-08-03 00:24:59 · 2248 阅读 · 1 评论 -
SQL之用户中两人一定认识的组合数--HQL面试题36【快手数仓面试题】
目录0 需求分析1 数据准备2 数据分析3 小结0 需求分析设表名:table0现有城市网吧访问数据,字段:网吧id,访客id(身份证号),上线时间,下线时间规则1、如果有两个用户在一家网吧的前后上下线时间在10分钟以内,则两人可能认识 规则2、如果这两个用户在三家以上网...原创 2021-07-28 02:04:42 · 1379 阅读 · 8 评论 -
Hive多维统计分析案例实战
目录0 需求描述1 数据结构2 准备工作2.1 准备表2.2 安装TEZ计算引擎3 业务分析3.1 统计视频观看数Top103.2 统计视频类别热度Top103.3 统计出视频观看数最高的20个视频的所属类别以及类别包含Top20视频的个数3.4 统计视频观看数Top50所关联视频的所属类别排序3.5 统计每个类别中的视频热度Top10,以Music为例3.6 统计每个类别视频观看数Top103.7 统计上传视频最多的用户Top10以及他们上传的视频观看次原创 2020-12-06 21:45:22 · 4076 阅读 · 0 评论 -
HiveSql面试题10--sum(if)统计问题
0 需求分析t_order表结构 字段名 含义 oid 订单编号 uid 用户id otime 订单时间(yyyy-MM-dd) oamount 订单金额(元) 所有在2018年1月下过单并且在2月没有下过单的用户,在3月份的下单情况: 目标字段名 含义原创 2020-09-01 23:13:08 · 6086 阅读 · 0 评论 -
窗口函数之ntile()函数讲解
ntileNTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值。将一个有序的数据集划分为多个桶(bucket),并为每行分配一个适当的桶数(切片值,第几个切片,第几个分区等概念)。它可用于将数据划分为相等的小切片,为每一行分配该小切片的数字序号。NTILE不支持ROWS BETWEEN,比如NTILE(2) OVER(PARTITION BY dept_no ORDER BY salary ROWS BETWEEN 3 PRECEDING - AND CURRENT ROW)。如.原创 2021-05-09 21:40:59 · 22382 阅读 · 0 评论 -
HiveSql面试题6--小打卡圈主与用户映射关系问题(SQL之join思维典型案例代表)
0 需求分析小打卡面试题:计算小打卡平台的圈主建了多少圈子,名下有多少用户已知,数据如下:圈子可以理解为微信公众号,用户可以理解为公众号的粉丝tb_habit圈子表:近千万行数据原创 2020-07-05 01:48:00 · 923 阅读 · 2 评论 -
HiveSql面试题5-版本号命名规则比较问题(order by多健值比较排序问题)
0 需求分析版本号信息存储在数据表中,每行一个版本号。 版本号命名规则如下: 产品版本号由三个部分组成 如:v9.11.2 第一部分9为主版本号,为1-99之间的数字; 第二部分11为子版本号,为0-99之间的数字; 第三部分2为阶段版本号,为0-99之间的数字(可选); 已知T1表有若干个版本号:v9.9.2 v8.1 v9.92 v9.9.2 v31.0.1 v31.0.1 v8.2.1 v9.99.1 v9.1.99 请使用hive sql编程.原创 2020-07-04 18:11:09 · 1868 阅读 · 2 评论