当前位置:   article > 正文

hive之条件判断函数(IF,COALESCE,CASE)_hive 判断怎么加

hive 判断怎么加

1.If函数:if和case差不多,都是处理单个列的查询结果
语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)

返回值: T

说明:  当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
举例:  if(条件表达式,结果1,结果2)相当于java中的三目运算符,只是if后面的表达式类型可以不一样。

IF((substr(${hiveconf:curr_date},1,7)=${hiveconf:forecast_month}) and (pt_day between concat(${hiveconf:forecast_month},'-01') and ${hiveconf:curr_date}),pay_amount,0)

2.非空查找函数: COALESCE
语法: COALESCE(T v1, T v2, …)

返回值: T

说明:  返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
举例:  coalesce(a3.salary,0)

3.条件件判断函数:这种CASE A和if差不多,条件查询
语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

返回值: T

说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f
此种用法较少可以4中的用户包容。

4.条件判断函数:这种case,case后面没有表达式,用于处理单个列的查询结果
语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

返回值: T

说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e

  1. CASE  [ expression ]
  2.   WHEN condition1 THEN result1
  3.   WHEN condition2 THEN result2
  4.   ...
  5.   WHEN conditionn THEN resultn
  6.   ELSE result
  7. END

举例:

  1. select a1.uid,
  2. sum(case when a1.rn=1 then a1.point else 0 end) range_max_pay_point,
  3. sum(a1.point) range_all_pay_point,
  4. sum(case when a1.pt_day between date_sub('2018-11-01',13) and '2018-11-01' then a1.point else 0 end) near_all_pay_point,
  5. count(distinct a1.pt_day) range_all_pay_day_cnt
  6. from xxyl0109_pay_basic a1
  7. group by a1.uid

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/595473
推荐阅读
相关标签
  

闽ICP备14008679号