nvl() 函数
nvl(score,0) 判断score的值是否为空,如果为空则为0,0为默认值,否则为score本身
coalesce函数
用途: 1、将控制值替换成其他值
2、返回第一个非空值
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。
举例:
select coalesce(success_cnt, 1) from tableA
当success_cnt 为null值的时候,将返回1,否则将返回success_cnt的真实值。
select coalesce(success_cnt,period,1) from tableA
当success_cnt不为null,那么无论period是否为null,都将返回success_cnt的真实值(因为success_cnt是第一个参数),当success_cnt为null,而period不为null的时候,返回period的真实值。只有当success_cnt和period均为null的时候,将返回1。
split()函数
split(skin_code,'\ /') 对skin_code切割字符串
skin_code |
'1_ABCD/3_ABCD/5_ABCD' |
'6_ABCD/5_ABCD/3_ABCD' |
执行函数split(skin_code,'\ /')
skin_code |
[1_ABCD,3_ABCD,5_ABCD] |
[6_ABCD,5_ABCD,3_ABCD] |
行转列
lateral view
实例
page_id | adid_list |
from_page | [1,2,3] |
concat_page | [3,4,5] |
SELECT pageid, adid
FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid;
运行结果
page_id | addid |
from_page | 1 |
from_page | 2 |
from_page | 3 |
concat_page | 3 |
concat_page | 4 |
concat_page | 5 |
concat()数据合并
concat(1,2)
执行结果 1,2
concat('1','-','2')
执行结果 1-2
列转行对数据合并collect_list/collect_set
表格
name | movie_name | date |
张三 | 大唐双龙传 | 20180516 |
李四 | 天下无贼 | 20180516 |
张三 | 神探狄仁杰 | 20180516 |
李四 | 霸王别姬 | 20180516 |
李四 | 霸王别姬 | 20180516 |
王五 | 机器人总动员 | 20180516 |
王五 | 放牛班的春天 | 20180516 |
王五 | 盗梦空间 | 20180516 |
按用户分组,取出每个用户每天看过的所有视频的名字:
select
username, collect_list(video_name)
from
t_visit_video
group
by
username ;
name | movie_name |
张三 | ["大唐双龙传","神探狄仁杰"] |
李四 | ["天下无贼","霸王别姬","霸王别姬"] |
王五 | ["机器人总动员"] |
|