Hive查询语法

更新时间:2023-06-19 07:19:09 阅读: 评论:0

面试自我介绍英语Hive查询语法
SELECT:
SELECT [ALL | DISTINCT] lect_expr, lect_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list [HAVING condition]]
[CLUSTER BY col_list
放我飞| [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list]
] [
LIMIT number]
order  by  会对输⼊做全局排序,因此只有⼀个reducer,会导致当输⼊规模较⼤时,需要较长的计算时间。
sort by  不是全局排序,其在数据进⼊reducer前完成排序,因此,如果⽤sort  by进⾏排序,并且设置 duce.task>1则sort  by  只能保证每个reducer的输出有序,不保证全局有序。
distribute  by(字段)  根据指定的字段将数据分到不同的reducer,且分发算法是hash散列。
cluster  by(字段) 除了具有distribute  by的功能外,还会对该字段进⾏排序、
因此,如果distribute和sort字段是同⼀个时,此时,cluster  by  =  distribute  by + sort  by
查询语法:
全表查询:
lect  *  from score;
选择特定的列:
lect s_id, c_id  from  score;
列别名:
重命名⼀个列,便于计算,紧跟列名,也可以在列名和别名直接加⼊关键字  AS
lect  s_id , as  myid,  c_id from score;
常⽤函数:
求总⾏数:
lect count(1)  from score;
求分数的最⼤值:
lect  max(s_score)  from  score;
求分数的最⼩值:
lect  min(s_score) from  score;
求分数的总和:
lect  sum(s_score)  from score;
求分数的平均值:
lect  avg(s_score)  from score;
老母猪戴胸罩
Limit 语句:
lect  * from score  limit3;
Where语句:
使⽤where⼦句,将不满⾜条件的⾏过滤掉
where⼦句紧随from⼦句
案例实操:
查询出分数⼤于60的数据。
lect  *  from  score  where  s_score  > 60;⽐较运算符:
查询分数等于80的所有的数据:
lect * from  score  where s_score = 80;
查询分数在80到100的所有数据:
lect  * from score  where  s_score between  80  and 100;
查询成绩为空的所有数据:
爆炒鸡杂
lect  * from score where s_score is null;
查询成绩是80和90的数据:
lect  * from  score  where  s_score  in (80,90);
Like  和  Rlike
使⽤LIKE运算选择类似的值
选择条件可以包含字符或数字
西游记人物分析
%  代表零个或多个字符(任意个字符)
_ 代表⼀个字符
RLike ⼦句是Hive中这个功能的⼀个扩展,其可以通过java的正则表达式这个更强⼤的语⾔来指定匹配条件。
案例实操:
查询以8开头的所有成绩:
lect  *  from  score  where  s_score  like  '8%';
查询第⼆个数值为9的所有成绩数据:
lect  *  from  score  where  s_score  like  '_9%';
查找s_id中含1的数据:
lect  * from score  where s_id  rlike  '[1]';      #    like  '%1%';北京幼儿园排名
逻辑运算符:
分组:
Group  By  语句:
祝女儿生日经典短句
Group  By  语句通常会和聚合函数⼀起使⽤,按照⼀个或者多个队列结果进⾏分组,然后对每个组执⾏聚合操作。
计算每个学⽣的平均分数:
lect  s_id,  avg(s_score)  from  score  group  by s_id;
计算每个学⽣的最⾼成绩:
lect s_id , max (s_score)  from  score  group  by  s_id;
HAVING语句:
having  与where  不同点:
1.          where  针对表中的列发挥作⽤,查询数据;having针对查询结果中的列发挥作⽤,筛选数据
2.          where 后⾯不能写分组函数,⽽having后⾯可以使⽤分组函数。
3.          having只⽤于group  by  分组统计语句
案例实操:
求每个学⽣的平均分数:
lect  s_id ,  avg(s_score)  from  score  group  by  s_id;
求每个学⽣平均分数⼤于85 的⼈
lect  s_id,  avg(s_score)  avgscore  from  score  group  by  s_id  having  avgscore > 85;
JOIN语句:
等值JOIN
hive⽀持通常的SQL JOIN  语句,但是只⽀持等值连接,不⽀持⾮等值连接。
案例操作:查询分数对应的姓名:
lect      s.s_id ,  s.s_score ,stu.s_name,stu.s_birth  from score s  join  student stu on  s.s_id = stu.s_id;内连接:
内连接:只有进⾏连接的两个表中都存在于连接条件相匹配的数据才会被保留下来。
lect  *  from teacher  t  inner  join  cour  c on t.t_id = c.t_id;
儿童睡前故事书
左外连接:
左外连接: JOIN操作符左边表符合where ⼦句的所有记录将会被返回,查询⽼师对应的课程lect  *  from  teacher  t    left  join  cour  c  on  t.t_id  =  c.t_id;
右外连接:
右外连接:  JOIN操作符右边表中符合WHERE⼦句的所有记录将会被返回。

本文发布于:2023-06-19 07:19:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1045247.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   分数   数据   条件   字符   计算   分组
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图