zoukankan      html  css  js  c++  java
  • hive的常见判断与抽样函数

    1.If函数:if和case差不多,都是处理单个列的查询结果
    
    语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
    
    返回值: T
    
    说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
    
    举例:if(条件表达式,结果1,结果2)相当于java中的三目运算符,只是if后面的表达式类型可以不一样。
    
    hive> select if(a=a,’bbbb’,111) from lxw_dual;
    
    bbbb
    
    hive> select if(1<2,100,200) from lxw_dual;
    
    200
    hive (bigdata)> select if(1>2,10,20)
    > ;
    OK
    _c0
    20
    
    
    hive (bigdata)> select COALESCE(null,10,20);
    OK
    _c0
    10
    Time taken: 0.076 seconds, Fetched: 1 row(s)
    
    
    
    2.非空查找函数: COALESCE
    
    语法: COALESCE(T v1, T v2, …)
    
    返回值: T
    
    说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
    
    hive> select COALESCE(null,’aaa’,50)from lxw_dual;
    
    aaa
    
    3.条件件判断函数:这种CASE A和if差不多,条件查询(常用)
    
    语法: CASE a WHEN b THEN c [WHENd THEN e]* [ELSE f] END
    
    返回值: T
    
    说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f
    
    举例:
    
    hive> Select case 100 when 50 then 'tom'when 100 then 'mary' else 'tim' end from lxw_dual;
    
    mary
    
    hive> Select case 200 when 50 then 'tom'when 100 then 'mary' else 'tim' end from lxw_dual;
    
    tim
    
    4.条件判断函数:这种case,case后面没有表达式,用于处理单个列的查询结果
    
    语法: CASE WHEN a THEN b [WHEN cTHEN d]* [ELSE e] END
    
    返回值: T
    
    说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e
    
    举例:
    
    hive> select case when 1=2 then 'tom'when 2=2 then 'mary' else 'tim' end from lxw_dual;
    
    mary
    
    hive> select case when 1=1 then 'tom'when 2=2 then 'mary' else 'tim' end from lxw_dual;
    
    tom
    
    实战演示:case匹配的结果属于一个新的字段
    
    
    select * from (
    
    select name ,id ,case
    
    when id <=1235 then 'low salary'
    
    when id >1235 and id <=1236 then 'middle'
    
    else 'very high'
    
    end
    
    from mytest_staff_info_demo4_cp1 where statis_date='20180228') b
    
    查询结果:
    
    name id _c2
    
    'account1' 1234 low salary
    
    'account2' 1235 low salary
    
    'account3' 1235 low salary
    
    'account4' 1236 middle
    
    'account5' 1237 very high
    
    
    SELECT COUNT(1) FROM (SELECT * FROM udata TABLESAMPLE (200 ROWS)) x;
    SELECT * FROM udata TABLESAMPLE (50 PERCENT);
    select * from table_name where col=xxx order by rand() limit num; 
    SELECT * FROM lxw1 TABLESAMPLE (30M);
  • 相关阅读:
    常用网络操作命令
    C语言中的位域[转]
    状态机——一种强大的思想利器
    9030PCI CAN驱动开发点滴
    驱动开发中应该注意的事项
    java 从网络Url中下载文件
    windows pyspider 爬虫安装
    java list去重
    Java 文件分块及合并
    工程部署到linux
  • 原文地址:https://www.cnblogs.com/hejunhong/p/10792217.html
Copyright © 2011-2022 走看看