• Hhive的数据查询和Hive函数


    • Hive的数据查询

    • Hive的聚合函数

    1.  Hive的数据查询

        数据查询是Hive的最主要的功能。Hive不支持标准SQL,但是熟悉SQL开发者还是能很快上手。

    1. select ....from  表;语句
      • select后面可以跟查询的字段,from后面跟查询的表名,如下:
      • 还可以为列和表起别名,select  列名  as   别名   from  表  ;(as可以省略)如下:
    2. 限制返回行数
      • select  *  from   表名   limit  n;  n表示行数;
    3. 去除重复字段:
      • select   distinct  列名   from   表;
    4. 在select语句中使用case..when ...then  根据某列进行相应的处理,如图下所示:


    5. where语句(很多时候需要对查询条件进行限制,就需要使用where语句)  例如:
      • select  *   from   表  where  age = 18; (查询年龄的18的信息)
      • where后的表达式完全兼容sql的写法,后面可以跟:
        • =  ,    <>   , !=  ,  >=   , <=  , is  null  ,  is  not  null   ,  like   ,   between   ,or    , and     in 
    6.  group  by  和having语句(相当于where)
      • group   by  通常会和聚合函数一起使用,先按照一个或多个结果进行分组,再执行聚合操作,如下:
        • select  列,count(*)  from  表  group  by  列名;
      • 如果使用group  by  字句,那么查询的字段如果没有出现在group by 字句后面则必须使用聚合函数,如下:
        • select name,avg(age)  from  student  roup  by  body;
        • 这样Hive就会抛出一个:Expression  not  in   gtoup  by  key  name  的异常
      1. 如果想对分组的结果进行条件过滤,可以使用having字句,如下:
        • 注意:字符串不能使用单引号,必须使用双引号。
    7. join语句
      1. (内连接)inner  join ....on   等值连接条件 
        • 语法:select * from  表A  inner  join  表B  on   A.id = B.id;
        • 只查询连接条件相等的字段数据。
      2. (左/右外连接)left/right  outer  join   on  等值连接条件
        • 语法:select * from  表A  left/right join  表B  on   A.id = B.id;
        • left:查询左表的所有信息与右表连接,没有与之对应的用null代替
        • right:查询右表的所有信息与左表连接,没有与之对应的用null代替
      3. (全外连接)full  outer  join  on  等值连接条件
        • 语法:select  表A.列,表B.列  from  表  full outer  join  A.id = B.id;
        • 全外连接意味着结果集会包括左表和右表的所有记录
      4. (左半连接)left  semi  join 
        • 语法:select  表A.列,表B.列  from  表  left   semi  join  A.id = B.id;
        • 返回左表记录,前提满足on语句的判断条件
      5. 多表join(三表之上)
        • select  表A.列,表B.列,表C.列  from  表  where  A.id = B.id  B.id = C.id;
    8. order  by 和  sotr by  语句------------>单独使用的时候不用where
      1. order  by  全局排序
        • select * from  表  order  by  列   desc/asc(升/降)
      2. sort  by    局部排序
        • select * from  表  sort  by  列   desc/asc(升/降)
    9. distribute by   和  cluster  by  
      • 二次排序:第一列相同的数据能够按照第二列进行排序的。
      • 语法:select  列1,列2  from 表  distribute  by   列1 sort by   列2;
      • 语法:select 列1,列2  from  表  cluster  by  列1,列2;

    2.  Hive函数

    1. count:j计算总行数
    2. sum:计算指定列的和
    3. avg:计算指定列的平均数
    4. max:统计指定列的最大值
    5. min:统计指定列的最小值
  • 相关阅读:
    ThinkPHP5专题
    php截取中文字符串
    跨域/非跨域接口专题
    JS检查输入项是否为手机号码或者固话号码的正则表达式
    TinkPHP去重统计查询
    模型类设计模式
    经典排序方法 python
    leetcode122 买卖股票的最佳时机 python
    找到链表的倒数第k个节点 python
    链表的实现、输出和反向 python
  • 原文地址:https://www.cnblogs.com/wyk1/p/14056525.html
Copyright © 2020-2023  润新知