count()
如果这一行是null,不会计数,如果不是null,就计1.
hour()
将时间戳转换为小时.
select current_timestamp;
查询当前时间戳.
select unix_timestamp();
查询当前时间戳转换成的Long类型
from_unixtime()
将Long类型转为时间戳.
窗口函数
CURRENT ROW:当前行 current row
n PRECEDING:往前n行数据 n preceding
n FOLLOWING:往后n行数据 n following
UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING表示到后面的终点 unbound preceding unbound following
rows between unbounded preceding and unbounded following 从前面的起点到后面的终点,这行语句跟在over()中的order by 之后
LAG(col,n):往前第n行数据 lag 参数一 字段 n
LEAD(col,n):往后第n行数据 lead
with tmp as()
将()中的查询结果作为一张名为'tmp'的临时表.
round(x,2)
x保留两位小数
nvl(a,b)
如果第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值
concat_ws('分隔符',expr1,expr2,...)
拼接字符串,以指定的分隔符隔开
concat_ws('分隔符',数组)
将数组中的元素拼接成字符串,以指定分隔符隔开
-------------------------------------------------------------------------------------------
collect_set(expr1,expr2,...)
将多个元素转换成一个数组,去重
collect_list(expr1,expr2,...)
将多个元素转换成一个数组,不去重
collect_set(列)
聚合函数 将所有的列组成数组 去重
collect_list(列)
聚合函数 将所有的列组成数组 不会去重
-------------------------------------------------------------------------------------------
array(expr1,expr2,...)
将多个元素转换成一个数组
sort_array(数组)
将数组中的元素排序.
split(字符串,切割符)
将字符串按指定切割符切割,切割完得到的元素放入一个数组.
regexp_extract('foothebar','foo(.*?)(bar)',2)
正则匹配,上面的例子得到的结果是'bar','.*?'表示任何字符串,上面的例子就是正则表达式如果可以匹配到前面的字符串,那么就会返回第2个括号中的东西,如果把2改成1,就会返回'the',也就是第1个括号里的东西.
select name ,tp
from
tb_movie2
lateral view
explode(category) t as tp ;