
hiveSQL面试1000道
SQL强化练习,进阶!!
KG大数据
这个作者很懒,什么都没留下…
展开
-
最真实的大数据SQL面试题(二)
真实数仓sql面试原创 2022-07-28 19:15:03 · 1284 阅读 · 1 评论 -
最真实的大数据SQL面试题(一)
真实数仓sql面试题(一)原创 2022-07-28 18:27:09 · 1317 阅读 · 1 评论 -
hiveSQL面试题24__N指标--累计去重
目录0- 描述1- 问题一0- 描述描述:假设表A为事件流水表,客户当天有一条记录则视为当天活跃。表A: time_id user_id2018-01-01 10:00:00 0012018-01-01 11:03:00 0022018-01-01 13:18:00 0012018-01-02 08:34:00 0042018-01-02 10:08:00 0022018-01-02 10:40:00 0032018-01-02原创 2021-12-28 19:20:29 · 802 阅读 · 0 评论 -
hiveSQL面试题23__等值连接--最近匹配
目录0- 描述1- 问题一0- 描述描述:表t23_1和表t23_2通过a和b关联时,有相等的取相等的值匹配,不相等时每一个a的值在b中找差值最小的来匹配。t23_1和t23_2为两个班的成绩单,t23_1班的每个学生成绩在t23_2班中找出成绩最接近的成绩。表t23_1:a中无重复值a1245810表t23_2:b中无重复值b23711131- 问题一描述:单向最近匹配输出结果如下所示:注意:b的值可能会被丢弃a b1 22 24原创 2021-12-28 19:17:45 · 458 阅读 · 0 评论 -
hiveSQL面试题22__非等值连接--范围匹配
目录0- 描述1- 问题一0- 描述描述:表f是事实表,表d是匹配表,在hive中如何将匹配表中的值关联到事实表中?表d相当于拉链过的变化维,但日期范围可能是不全的。表f:date_id p_id 2017 C 2018 B 2019 A 2013 C表d:d_start d_end p_id p_value 2016 2018 A 1 2016 2018 B 2 2008原创 2021-12-28 18:49:51 · 533 阅读 · 0 评论 -
hiveSQL面试题21__时间序列--取最新完成状态的前一个状态
目录0- 描述1- 问题一2- 问题二0- 描述描述:时间序列–取最新完成状态的前一个状态表名:t21表字段及内容:date_id a b2014 1 A2015 1 B2016 1 A2017 1 B2013 2 A2014 2 B2015 2 A2014 3 A2015 3 A2016 3 B2017 3 A原创 2021-12-28 18:40:07 · 327 阅读 · 0 评论 -
hiveSQL面试题20__时间序列--补全数据
目录0- 描述1- 问题一0- 描述描述:时间序列–补全数据表名:t20表字段及内容:date_id a b c2014 AB 12 bc2015 23 2016 d2017 BC 1- 问题一描述:如何使用最新数据补全表格输出结果如下所示:date_id a b c2014 AB 12 bc2015 AB 23 bc2016 AB原创 2021-12-28 18:30:19 · 635 阅读 · 0 评论 -
hiveSQL面试题19__时间序列--取多个字段最新的值
目录0- 描述1- 问题一0- 描述描述:时间序列–取多个字段最新的值表名:t19表字段及内容:date_id a b c2014 AB 12 bc2015 23 2016 d2017 BC 1- 问题一描述:如何一并取出最新日期输出结果如下所示:date_a a date_b b date_c c2017 BC 2015 23 2016原创 2021-12-27 16:52:39 · 422 阅读 · 0 评论 -
hiveSQL面试题18__时间序列--构造连续日期
目录0- 描述1- 问题一0- 描述描述:时间序列–构造连续日期表名:t18表字段及内容:a b c101 2018-01-01 10101 2018-01-03 20101 2018-01-06 40102 2018-01-02 20102 2018-01-04 30102 2018-01-07 601- 问题原创 2021-12-27 16:32:45 · 339 阅读 · 0 评论 -
hiveSQL面试题17__时间序列--构造累积日期
目录0- 描述1- 问题一0- 描述描述:时间序列–构造累积日期表名:t17表字段及内容:date_id2017-08-012017-08-022017-08-031- 问题一描述:每一日期,都扩展成月初至当天输出结果如下所示:date_id date_to_day2017-08-01 2017-08-012017-08-02 2017-08-012017-08-02 2017-08-022017-08-03 2017-08-012017-08-03 20原创 2021-12-27 16:08:23 · 262 阅读 · 0 评论 -
hiveSQL面试题16__时间序列--构造日期
目录0- 描述1- 问题一0- 描述描述:时间序列–构造日期1- 问题一描述:直接使用SQL实现一张日期维度表,包含以下字段:create table if not exists dim_date ( date_id string comment '日期(yyyymmdd)' ,datestr string comment '日期(yyyy-mm-dd)' ,date_name原创 2021-12-27 11:49:20 · 620 阅读 · 0 评论 -
hiveSQL面试题15__时间序列--进度及剩余
这里写目录标题0- 描述1- 问题一0- 描述描述:时间序列–进度及剩余表名:t15表字段及内容:date_id is_work2017-07-31 12017-08-01 12017-08-02 12017-08-03 12017-08-04 12017-08-05 02017-08-06 01- 问题一描述:求每天的累计周工作日,剩余周工作日输出结果如下所示:date_id wee原创 2021-12-27 11:19:34 · 344 阅读 · 0 评论 -
hiveSQL面试题14__业务逻辑的分类与抽象--时效
目录0- 描述1- 问题一0- 描述描述:业务逻辑的分类与抽象–时效日期表:d_date表字段及内容:date_id is_work2017-04-13 12017-04-14 12017-04-15 02017-04-16 02017-04-17 1工作日:周一至周五09:30-18:30客户申请表:t14表字段及内容:a b c1 申请 2017-04-14 18:03原创 2021-12-24 18:26:55 · 502 阅读 · 0 评论 -
hiveSQL面试题13__抽象分组--断点排序
目录0- 描述1- 问题一0- 描述描述:抽象分组–断点排序表名:t13表字段及内容:a b2014 12015 12016 12017 02018 02019 -12020 -12021 -12022 12023 11- 问题一描述:断点排序输出结果如下所示:a b c 2014 1 12015 1 22016 1 32017 0 12018 0 22019 -1 1原创 2021-12-24 18:16:58 · 492 阅读 · 0 评论 -
hiveSQL面试题12__多容器--转多行
目录0- 描述1- 问题一0- 描述描述:多容器–转多行表名:t12表字段及内容:a b c001 A/B 1/3/5002 B/C/D 4/51- 问题一描述:转多行输出结果如下所示:a d e001 type_b A001 type_b B001 type_c 1001 type_c 3001 type_c 5002原创 2021-12-24 18:01:55 · 464 阅读 · 0 评论 -
hiveSQL面试题11__多容器--成对提取数据
目录0- 描述1- 问题一0- 描述描述:多容器–成对提取数据表名:t11表字段及内容:a bA/B 1/3B/C/D 4/5/21- 问题一描述:成对提取数据,字段一一对应输出结果如下所示:a bA 1B 3B 4C 5D 2参考答案:select a_inx, b_inxfrom ( select a, b, a_id,原创 2021-12-24 15:36:30 · 582 阅读 · 0 评论 -
hiveSQL面试题10__容器--反转内容
目录0- 描述1- 问题一2- 问题二0- 描述描述:容器–反转内容表名:t10表字段及内容:aAB,CA,BADBD,EA1- 问题一描述:反转逗号分隔的数据:改变顺序,内容不变输出结果如下所示:BAD,CA,ABEA,BD参考答案:select a, concat_ws(",",collect_list(str))from ( select a, str from t10 lateral view explode(split(r原创 2021-12-24 15:24:46 · 605 阅读 · 0 评论 -
hiveSQL面试题9__不使用distinct或group by去重
目录0- 描述1- 问题一0- 描述表名:t9表字段及内容:a b c d2014 2016 2014 A2014 2015 2015 B1- 问题一描述:不使用distinct或group by去重输出结果如下所示:2014 A2016 A2014 B2015 B参考答案:select t2.year ,t2.numfrom ( select * ,row_number() over (part原创 2021-12-24 11:39:34 · 573 阅读 · 0 评论 -
hiveSQL面试题8__模拟循环操作
目录0- 描述1- 问题一0- 描述表名:t8表字段及内容:a101101011- 问题一描述:如何将字符’1’的位置提取出来输出结果如下所示:1,3,42,4参考答案:select a, concat_ws(",",collect_list(cast(index as string))) as resfrom ( select a, index+1 as index, chr from (原创 2021-12-24 11:17:29 · 309 阅读 · 0 评论 -
hiveSQL面试题7__合并与拆分
目录0- 描述1- 问题一2- 问题二0- 描述表名:t7表字段及内容:a b2014 A2014 B2015 B2015 D1- 问题一描述:合并输出结果如下所示:2014 A、B2015 B、D参考答案:select a, concat_ws('、', collect_set(t.b)) bfrom t7group by a;2- 问题二问题描述:将分组合并的结果拆分出来参考答案:select t.a, dfrom(原创 2021-12-24 10:57:20 · 311 阅读 · 0 评论 -
hiveSQL面试题6__数据扩充与收缩
目录0- 描述1- 问题一2- 问题二3- 问题三4- 问题四5- 问题五0- 描述表名:t6表字段及内容:a3241- 问题一描述:数据扩充输出结果如下所示:a b3 3、2、12 2、14 4、3、2、1参考答案:select t.a, concat_ws('、',collect_set(cast(t.rn as string))) as bfrom( select t6.a, b.rn from t原创 2021-12-23 19:11:39 · 443 阅读 · 0 评论 -
hiveSQL面试题5__产生连续数值
目录0- 描述0- 描述期望输出结果如下所示:12345...100参考答案:不借助其他任何外表,实现产生连续数值此处给出两种解法,其一:selectid_start+pos as idfrom( select 1 as id_start, 1000000 as id_end) m lateral view posexplode(split(space(id_end-id_start), '')) t as pos, val其二:sele原创 2021-12-23 15:49:45 · 2589 阅读 · 0 评论 -
hiveSQL面试题4__窗口大小控制
目录0- 窗口大小控制1- 问题一2- 问题二0- 窗口大小控制表名:t4表字段及内容:a b c2014 A 32014 B 12014 C 22015 A 42015 D 31- 问题一描述:按a分组按b字段排序,对c取前后各一行的和输出结果如下所示:a b sum_c2014 A 12014 B 52014 C 12015 A 32015 D 4参考答案:select a,原创 2021-12-23 15:32:22 · 214 阅读 · 0 评论 -
hiveSQL面试题3__累计求值
目录0- 累计求值1- 问题一2- 问题二3- 问题三4- 问题四0- 累计求值表名:t3表字段及内容:a b c2014 A 32014 B 12014 C 22015 A 42015 D 31- 问题一描述:按a分组按b字段排序,对c累计求和输出结果如下所示:a b sum_c2014 A 32014 B 42014 C 62015 A 42015 D 7参考答案:select原创 2021-12-23 15:13:41 · 537 阅读 · 0 评论 -
hiveSQL面试题2__排名中取他值
目录0- 描述1- 问题一2- 问题二3- 问题三4- 问题四5- 问题五0- 描述表名:t2表字段及内容:a b c2014 A 32014 B 12014 C 22015 A 42015 D 31- 问题一描述:按a分组取b字段最小时对应的c字段输出结果如下所示:a min_c2014 32015 4参考答案:select a, c as min_cfrom( select a,原创 2021-12-23 14:31:20 · 430 阅读 · 0 评论 -
hiveSQL面试题1__行列转换
目录0- 描述1- 问题一2- 问题二3- 问题三0- 描述描述:表中记录了各年份各部门的平均绩效考核成绩。表名:t1表结构:a -- 年份b -- 部门c -- 绩效得分表内容: a b c2014 B 92015 A 82014 A 102015 B 71- 问题一问题描述:将上述表内容转为如下输出结果所示: a col_A col_B2014 10 92015 8 7参考答案:select a, ma原创 2021-12-23 13:48:43 · 357 阅读 · 0 评论 -
hiveSQL面试题--21_美团优选一面【美团】
目录0-面试题1-答案详细解析1.1-自我介绍1.2-到北京工作的医院1.3-SQL题,给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的名字1.4-SQL题,基于刚才, 得出 省份 总 交易额 [0,500 ] , [500,1000 ] , [1000,+oo ] 在以下三个区间的 省份 的 数量1.5-SQL题,还是基于刚才, 按从小到大的顺序得出每个城市的累计交易额,可以用窗口1.6-根据分隔符划分字段,可以用正则表达1.7-主要负责的产品1.8-产品的指原创 2021-09-22 20:15:53 · 964 阅读 · 0 评论 -
hiveSQL面试题--14__hiveSQL统计断电次数及断电时长【物联网场景按事件变化后分桶算法的应用】(蔚来汽车)
统计外电网各个设备的断电次数及断电时长,其中外电网正常状态为0,断电状态为1。统计断电次数,即是外电网的状态从0-1的变化次数。msg_time表示上报消息的时间,一分钟上报一次。数据格式:设备ID - 时间戳 - 外电网状态。类似的有统计开关量的使用次数,使用时长等问题:(1)求断电次数(2)求每次断电后断电时长(断电多久后被恢复,时间为分钟数要求保留一位小数)(3)求每次断电后状态开始时间和结束时间1-数据准备vim原创 2021-08-30 15:42:49 · 666 阅读 · 0 评论