非空查找函数: COALESCE 应用

语法: COALESCE(T v1, T v2,…)

返回值: T

说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL

示例:

hive> select COALESCE(null,'100','50′) from lxw_dual;

100

实际应用

代码

insert overwrite table user_profile_db.t_population_before_apply_city partition(datepartition='${day_01}')
select 
a.cid,
COALESCE(b.city_name,a.population_apply_city) as city_name
from
(select *
from
user_profile_db.t_population_apply_city 
where datepartition='${day_01}'
)a
left join
(select cid,
city_name
from
(select *,
ROW_NUMBER() over(partition by cid 
                             order by create_date asc) as rank
from
(select a.rank_apply,
b.*
from
(
select *
from
user_profile_db.t_population_apply_city
where datepartition='${day_01}'
) a
inner join
(
select *
from
user_profile_db.t_population_cnt_before_after_apply_tmp 
where datepartition='${day_01}'
) b
on
a.cid=b.cid
) a
) b
where rank=rank_apply-1 
and datediff(cnt_apply_time,create_date)<30
and datediff(cnt_apply_time,create_date)>=0
)b
on 
a.cid=b.cid
;

如果b.city_name is null 则取a.population_apply_city的值 可以理解为相当于case when模式

转载于:https://my.oschina.net/u/3455048/blog/993821

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值