点击上方 "大数据肌肉猿"关注, 星标一起成长
点击下方链接,进入高质量学习交流群
今日更新| 950个转型案例分享-大数据交流群
本文目录:
一、行列转换
二、排名中取他值
三、累计求值
四、窗口大小控制
五、产生连续数值
六、数据扩充与收缩
七、合并与拆分
八、模拟循环操作
九、不使用distinct或group by去重
十、容器--反转内容
十一、多容器--成对提取数据
十二、多容器--转多行
十三、抽象分组--断点排序
十四、业务逻辑的分类与抽象--时效
十五、时间序列--进度及剩余
十六、时间序列--构造日期
十七、时间序列--构造累积日期
十八、时间序列--构造连续日期
十九、时间序列--取多个字段最新的值
二十、时间序列--补全数据
二十一、时间序列--取最新完成状态的前一个状态
二十二、非等值连接--范围匹配
二十三、非等值连接--最近匹配
二十四、N指标--累计去重
描述:表中记录了各年份各部门的平均绩效考核成绩。
表名:
表结构:
表内容:
问题一:多行转多列
问题描述:将上述表内容转为如下输出结果所示:
参考答案:
问题二:如何将结果转成源表?(多列转多行)
问题描述:将问题一的结果转成源表,问题一结果表名为。
参考答案:
问题三:同一部门会有多个绩效,求多行转多列结果
问题描述:2014年公司组织架构调整,导致部门出现多个绩效,业务及人员不同,无法合并算绩效,源表内容如下:
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:按a分组取b字段最小时对应的c字段
输出结果如下所示:
参考答案:
问题二:按a分组取b字段排第二时对应的c字段
输出结果如下所示:
参考答案:
问题三:按a分组取b字段最小和最大时对应的c字段
输出结果如下所示:
参考答案:
问题四:按a分组取b字段第二小和第二大时对应的c字段
输出结果如下所示:
参考答案:
问题五:按a分组取b字段前两小和前两大时对应的c字段
注意:需保持b字段最小、最大排首位
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:按a分组按b字段排序,对c累计求和
输出结果如下所示:
参考答案:
问题二:按a分组按b字段排序,对c取累计平均值
输出结果如下所示:
参考答案:
问题三:按a分组按b字段排序,对b取累计排名比例
输出结果如下所示:
参考答案:
问题四:按a分组按b字段排序,对b取累计求和比例
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:按a分组按b字段排序,对c取前后各一行的和
输出结果如下所示:
参考答案:
问题二:按a分组按b字段排序,对c取平均值
问题描述:前一行与当前行的均值!
输出结果如下所示:
参考答案:
输出结果如下所示:
参考答案:
不借助其他任何外表,实现产生连续数值
此处给出两种解法,其一:
其二:
那如何产生1至1000000连续数值?
参考答案:
表名:
表字段及内容:
问题一:数据扩充
输出结果如下所示:
参考答案:
问题二:数据扩充,排除偶数
输出结果如下所示:
参考答案:
问题三:如何处理字符串累计拼接
问题描述:将小于等于a字段的值聚合拼接起来
输出结果如下所示:
参考答案:
问题四:如果a字段有重复,如何实现字符串累计拼接
输出结果如下所示:
参考答案:
问题五:数据展开
问题描述:如何将字符串"1-5,16,11-13,9"扩展成"1,2,3,4,5,16,11,12,13,9"?注意顺序不变。
参考答案:
表名:
表字段及内容:
问题一:合并
输出结果如下所示:
参考答案:
问题二:拆分
问题描述:将分组合并的结果拆分出来
参考答案:
表名:
表字段及内容:
问题一:如何将字符'1'的位置提取出来
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:不使用distinct或group by去重
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:反转逗号分隔的数据:改变顺序,内容不变
输出结果如下所示:
参考答案:
问题二:反转逗号分隔的数据:改变内容,顺序不变
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:成对提取数据,字段一一对应
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:转多行
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:断点排序
输出结果如下所示:
参考答案:
日期表:
表字段及内容:
工作日:周一至周五09:30-18:30
客户申请表:
表字段及内容:
问题一:计算上表中从申请到通过占用的工作时长
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:求每天的累计周工作日,剩余周工作日
输出结果如下所示:
参考答案:
此处给出两种解法,其一:
其二:
问题一:直接使用SQL实现一张日期维度表,包含以下字段:
参考答案:
表名:
表字段及内容:
问题一:每一日期,都扩展成月初至当天
输出结果如下所示:
这种累积相关的表,常做桥接表。
参考答案:
表名:
表字段及内容:
问题一:构造连续日期
问题描述:将表中数据的b字段扩充至范围[2018-01-01, 2018-01-07],并累积对c求和。
b字段的值是较稀疏的。
输出结果如下所示:
参考答案:
表名:
表字段及内容:
问题一:如何一并取出最新日期
输出结果如下所示:
参考答案:
此处给出三种解法,其一:
其二:
其三:
表名:
表字段及内容:
问题一:如何使用最新数据补全表格
输出结果如下所示:
参考答案:
表名:
表字段及内容:
上表中B为完成状态。
问题一:取最新完成状态的前一个状态
输出结果如下所示:
参考答案:
此处给出两种解法,其一:
其二:
问题二:如何将完成状态的过程合并
输出结果如下所示:
参考答案:
表f是事实表,表d是匹配表,在hive中如何将匹配表中的值关联到事实表中?
表d相当于拉链过的变化维,但日期范围可能是不全的。
表f:
表d:
问题一:范围匹配
输出结果如下所示:
**参考答案:
此处给出两种解法,其一:
其二:
表t23_1和表t23_2通过a和b关联时,有相等的取相等的值匹配,不相等时每一个a的值在b中找差值最小的来匹配。
t23_1和t23_2为两个班的成绩单,t23_1班的每个学生成绩在t23_2班中找出成绩最接近的成绩。
表t23_1:a中无重复值
表t23_2:b中无重复值
问题一:单向最近匹配
输出结果如下所示:
注意:b的值可能会被丢弃
参考答案:
假设表A为事件流水表,客户当天有一条记录则视为当天活跃。
表A:
假设客户活跃非常,一天产生的事件记录平均达千条。
问题一:累计去重
输出结果如下所示:
参考答案: