![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQLBOY1000题
文章平均质量分 65
莫叫石榴姐
云淡风轻一轮江月明
展开
-
HiveSQL高级进阶技巧,掌握这10个技巧,你的SQL水平将有一个质的提升!
HiveSQL高级进阶技巧,掌握这10个技巧,你的SQL水平将有一个质的提升!原创 2023-01-30 15:35:26 · 1090 阅读 · 1 评论 -
SQL之推荐商品问题
本题主要考察对关联的认识,通过各种关联变换获取结果。通过本题可以获得认识:要获取表中数据之间的相互关系只能进行自关联获取;要想得到差集,需要通过left join+is null形式获取,hive中没有数组的交集、差集、并集的函数,因此只能采用关联得到结果。原创 2022-09-10 22:51:35 · 1804 阅读 · 0 评论 -
SQL面试题之区间合并问题
本题为区间合并问题,问题比较经典,判断的核心思路是构造条件:当前行的起始时间原创 2022-09-02 18:10:26 · 2340 阅读 · 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 · 1589 阅读 · 1 评论 -
HiveSql面试题:连续签到领金币问题【百度-困难题-通用解法】
本文给出了一种连续签到领取金币的一种通用解法,通过窗口函数生成标签值进行辅助计算原创 2022-05-04 00:55:13 · 2464 阅读 · 5 评论 -
HIveSQL面试题52:近一个月发布的视频中热度最高的top3视频【抖音面试题,不得不去吐槽的一个题目】
这道题源自于牛客网,题目本身没什么难度,但在牛客中通过率极低,原因是题目本身但表达很模糊,很多定义没有直接给出,靠面试者猜,造成了误解,如果面试遇到这种题目90%挂,因为你不能准确理解题意,需要反复和面试官确认,即使做出来了,最终也是失败,而这题竟然出自抖音,面试出题也太随意了,无力吐槽,看来面试有时候真的靠缘分,哈哈哈。。。。原创 2022-04-17 13:15:03 · 1419 阅读 · 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 · 5427 阅读 · 1 评论 -
HiveSql一天一个小技巧:如何不借助其他任何外表,产生连续数值
0 需求描述输出结果如下所示:12345...1001 问题分析方法一:起始值(start)+步长(diff)=结束值(end)select split(space(5), ' ')+----------------------+| _c0 |+----------------------+| ["","","","","",""] |+----------------------+select posexplode(spl原创 2022-04-12 22:35:04 · 1571 阅读 · 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 · 1326 阅读 · 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 · 5841 阅读 · 0 评论 -
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 · 1336 阅读 · 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 · 904 阅读 · 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 · 1063 阅读 · 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 · 2342 阅读 · 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之一天一个小技巧:如何使用HQL进行行值轮转
0 需求你想返回每个员工的姓名、工资,以及下一个比当前员工高和低的工资值。如果没有找到更高或更低的工资值,你希望结果集可以“折回”(第一个 SAL 的前一行是最后一个 SAL;反之,最后一个 SAL 的下一行即是第一个 SAL)。你希望返回如下所示的结果集。其实就是寻找比当前员工工资低及工资高的前后的工资值,如果遇到最高的工资或最低的工资则进行折回ENAME SAL FORWARD REWIND---------- ---------- --------原创 2021-08-15 15:16:09 · 360 阅读 · 0 评论 -
SQL之查找每个用户的受欢迎程度--HQL面试题43【Facebook面试题】
本题为Facebook面试题,本题的难点在于第一步分析的结果上,第一步分析结果的得出需要我们根据题意将可能结果等列出,这样我们自然而然就会想到union的方法。针对本题给出了两种方法一种采用常规思路关联的方法给出结果,一种采用窗口函数形式分析出结果,窗口函数分析方法在形式上更简洁一些。本题在用窗口函数分析结果时候采用size(collect_set())这一技巧,分析去重后的个数,在低版本的hive中如1.1是不支持count(distinct XXX) over()这种形式的,这一技巧需要注意和掌握。原创 2021-08-10 23:07:44 · 1148 阅读 · 0 评论 -
SQL之匹配填鸭问题【行转列问题】--HQL面试题40
本题实质上考察行转列问题,行转列在实际项目中经常使用,对于行转列求解,本文给出了两种方法,一种是经典的max(case when) 解法,一种是借助hive的collect_list()函数及array_contains()函数进行求解,两种解法各有千秋,希望读者熟练掌握。原创 2021-08-07 19:18:21 · 464 阅读 · 0 评论 -
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 · 1392 阅读 · 8 评论 -
一种基于批处理的N天窗口内趋势异常分析【物联网大数据应用】
在设备健康监测管理时,我们往往需要对设备运行时的电路参数进行监控,以反映设备的运行状况,通过对设备的运行参数长期统计观察建立设备的状态评估模型 。其中一个典型的场景就是我们需要对设备参数指标,进行趋势分析,比如判断某个指标在某一段时间内呈现递增或是递减的趋势,换句话说设备在一时期某一个参数朝着恶化的趋势发展,我们需要对这种趋势进行预警。解决这种长周期的趋势预警问题,我们往往需要构建设备数仓,在批处理中进行分析。本文以转辙机动作电流为例进行分析,针对转辙机动作电流文中给出了一种设备趋......原创 2021-07-08 20:17:26 · 649 阅读 · 6 评论 -
HiveSQL窗口函数作为辅助列在计算中的应用【HiveSQL面试题2详解】
0. 需求有如下数据表year subject student score 2018 语文 A 84 2018 数学 A 59 2018 英语 A 30 2018 语文 B 44 2018 数学 B 76 2018 英语 B 68 2019 语文 A 51 2019 数学 A 94 2019 英语原创 2020-05-30 21:55:32 · 1553 阅读 · 2 评论 -
SQL之累积计算问题--HQL面试题1
0. 需求 我们有如下的用户访问数据 userId visitDate visitCount u01 2017/1/21 5 u02 2017/1/23 6 u03 2017/1/22 8 u04 2017/1/20 3 u01 2017/1/...原创 2020-04-04 20:37:10 · 1463 阅读 · 1 评论 -
SQL之计算每一年出现过的最大气温值【TOPN问题】--HiveSQL面试题34
0 需求分析需求:现在要求使用hive,计算每一年出现过的最大气温的日期+温度。解释:2010012325表示在2010年01月23日的气温为25度数据如下temp 2021010114 2021010216 2021010317 2021010410 2021010506 2021010609 2021010732 2021010812 2021010919 1 数据准备(1) 数据vim temp.txt20210101142021原创 2021-07-21 23:57:38 · 831 阅读 · 0 评论 -
一种基于批处理实现的N天窗口内指标异常偏离分析方法【物联网大数据应用场景】
目录0 需求分析1 数据准备2 数据分析3 小 结0 需求分析如下表所示:gw_id代表网关id,sensor_id代表设备id,avg_gd_vol代表每天的轨道电压均值点,compute_day代表日期gw_id sensor_id avg_gd_vol compute_day 1001 123456 18.5 2017-07-01 1001 123456 0.6 2017-07-02 1001 1234原创 2021-07-03 21:42:00 · 370 阅读 · 2 评论 -
SQL取出累计值与1000相差最小差值的id【滴滴面试】--HiveSQL面试题27
0 需求分析问题: table1(id:自增id,money:费用)问题:按id顺序累加money,取出累计值与1000相差绝对值最小差值的id。表如下:id money 1 100 2 300 3 500 4 700 5 200 6 400 7 500 8 700 9 900 10 100 11 400 12 700 1 数据准备(1)数据vim money原创 2021-06-29 15:42:54 · 758 阅读 · 0 评论 -
SQL英雄出场排名top3的出场次数及出场率问题分析--HiveSQL面试题26
目录0 需求分析1 数据准备2 数据分析3 小结0 需求分析英雄表如下:id names 1 aa,bb,cc,dd,ee 2 aa,bb,ff,ww,qq 3 aa,cc,rr,yy 4 aa,bb,dd,oo,pp 求英雄的出场排名top3的出场次数及出场率。names代表英雄名字1 数据准备(1) 数据vim heros.txtid names1 aa,bb,cc,dd,ee2 aa,bb,ff,ww.原创 2021-06-26 16:45:19 · 932 阅读 · 4 评论 -
HiveSQL面试题21--用户行为分析join的应用【小红书面试题】
【面试题】小红书月活跃用户数已经过亿,用户在小红书上通过文字、图片、视频笔记分享生活,并创建相关商品链接,吸引相同爱好的用户进行收藏购买,用户的消费有什么行为特征呢?(小红书面试题)现有用户订单表、用户收藏表。用户订单表:记录用户id、购买的商品id、用户下单的时间及商品的种类。用户收藏商品表:记录用户id、用户收藏的商品id及收藏时间。问题:请用一句sql语句得出以下查询结果,得到所有用户的商品行为特征,其中用户行为分类为4种:已购买、购买未收藏、收藏未购买、收藏且购买。.原创 2021-06-23 22:06:22 · 1263 阅读 · 3 评论 -
HiveSql面试题11详解(count(1)、count(*)和count(列名)的区别)
- 如果列为主键,count(列名)效率优于count(1)- 如果列不为主键,count(1)效率优于count(列名)- 如果表中存在主键,count(主键列名)效率最优- 如果表中只有一列,则count(*)效率最优- 如果表有多列,且不存在主键,则count(1)效率优于count(*)原创 2020-09-02 09:49:19 · 3407 阅读 · 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 · 3179 阅读 · 3 评论 -
HiveSql面试题6--小打卡圈主与用户映射关系问题(SQL之join思维典型案例代表)
0 需求分析小打卡面试题:计算小打卡平台的圈主建了多少圈子,名下有多少用户已知,数据如下:圈子可以理解为微信公众号,用户可以理解为公众号的粉丝tb_habit圈子表:近千万行数据原创 2020-07-05 01:48:00 · 923 阅读 · 2 评论 -
HiveSql工作中常见易错点总结
0 前言在进行数仓搭建和数据分析时最常用的就是 sql,其语法简洁明了,易于理解,目前大数据领域的几大主流框架全部都支持sql语法,包括 hive,spark,flink等,所以sql在大数据领域有着不可替代的作用,需要我们重点掌握。在使用sql时如果不熟悉或不仔细,那么在进行查询分析时极容易出错,接下来我们就来看下几个容易出错的sql语句及使用注意事项。1. decimalhive 除了支持 int,double,string等常用类型,也支持 decimal 类型,用于在数据库中存储精确原创 2021-04-23 10:10:40 · 1177 阅读 · 1 评论 -
HiveSql面试题--通过分桶算法解决事件类型问题思路
0 需求表结构:others user_id customer_id。如下所示:hive> select * from a;OK,,, 1 9,,, 2 8,,, 2 2,,, 3 ,,, 4 7当user_id = customer_id时候输出如下结果:1 数据准备create table a( others string, user_id string, c..原创 2021-04-11 14:51:58 · 491 阅读 · 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 · 6089 阅读 · 0 评论 -
SQL 窗口函数的优化和执行
窗口函数(Window Function)是 SQL2003 标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干处拓展。窗口函数不同于我们熟悉的普通函数和聚合函数,它为每行数据进行一次计算:输入多行(一个窗口)、返回一个值。在报表等分析型查询中,窗口函数能优雅地表达某些需求,发挥不可替代的作用。本文首先介绍窗口函数的定义及基本语法,之后将介绍在 DBMS 和大数据系统中是如何实现高效计算窗口函数的,包括窗口函数的优化、执行以及并行执行。什么是窗口函数?窗口转载 2021-02-18 14:02:03 · 1338 阅读 · 0 评论