本人大三,没有一点思绪。所以写一篇博客
先说最近的安排,如果每天我只弄这一点点的sql来说,我感觉工作量是不够的,甚至太少了,根本不够博主就业。所以博主准备厚积薄发,先将自己的计划学习一大截,然后每天晚上七点之后就开始每天的耕耘,因为博主有将近半天的时间在考驾照。所以应该不会学啥写啥了,会将重要的只是写在博客里面,同时我也会每天在博客上面写上一道sql题目。这些sql题目可能是来自其它博客的,也可能是来自其它公众号的。关于对hive的csdn博主,我经常看云祁,石榴姐yyds,涤生手记。希望以后也可以有我、
题目一:
需求:转换成为下面的样式:
CourseMaster表:课程id,课程名称
OpenCourse表:月份,课程id
·每个课程在6,7,8月份,只要有课就打成O,没有则打成X
解析:
select course_name, case when course_id in (select course_id from OpenCourse where month =200706) then "O" else "X" End as "六月上课", case when course_id in (select course_id from OpenCourse where month = 200707 ) then "O" else "X" end as "七月上课", case when course_id in (select course_id from OpenCourse where month = 200708) then "O" else "X" end as "八月上课" from CourseMaster
结果展示:
题目二:
从下面的表中找出每个num的最大列
结果:
解法1:将x,y,z合并到一列里面,这样分组找最大值,那个最大值就是在x,y,z里面找
select num,max(x) from ( select num,x from Greatests union select num,y from Greatests union select num,z from Greatests) TMP group by num
解法2:利用case when来进行比较。类似于三元运算符
select num,case when case when x上面两种方法都是经过博主自己试验过的,完全可以在mysql中跑通。但是注意一点,就是在hive里面,group by 之后,select字段除了group by 的字段之外,不能存在其它字段,可以存在聚合函数。如果存在其它字段,那么就会报错i group by报错。但是在mysql里面就不会报错。至于为什么会报错,博主明天会写一篇文章给大家讲解一下。
题目三:order by case when
需求:
要求输出成下面这个样子:
解析:
按照下面要求的展示出来,可以在order by后面加上case when 。给不同的Num赋予它不同的数值,这样order by 这些数值就可以变幻出下面的样子select num ,x,y,z from Greatests order by case num when "A" then 2 when "b" then 1 when "c" then 3 when "d" then 4 when "5" then 6 end desc总结:
明天就不会这样一个一个来了。之后的博客也会介绍一下关于hive的优化以及Hive的一些重点知识。例如自定义UDF函数,行转列,列转行。控制map和reduce数量。介绍hive的执行原理以及相关的组件,还有hive的文件存储之类的核心知识点。一边是sql一边是hive。齐头并进
最后,欢迎大家观看我的博客。虽然很简陋,但是这也是将来大数据新星的雏形。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)