一、函数
(一)常用函数
字符函数:
concat(String s1,String sep,String s2);使用连接符将两个字符串连接在一起
例 :select concat("abc","+","def");//结果:abc+def
concat(String s1,String s2);若不加连接符,直接将两个字符串连接在一起;
例:select concat("abc","def"); //结果为:abcdef
concat_ws(string sep,array<string>/string...array);将字符串或者数组以分隔符连接起来
例:select concat_ws('-',array('aa','bb'));//结果为:aa-bb
例:select concat_ws('-','aa','bb');//结果为:aa-bb
array<array<string>> sentences(string sentence)#拆词(!和?是将目标以!或者?拆成两个部分)
例:select sentences('hello kb10,how are you');//结果为 :[["hello","kb10","how","are","you"]]
例:select sentences('hello kb10!how are you');//结果为:[["hello","kb10"],["how","are","you"]]
ascii(String a);返回字符串的ASC码;
(二)、窗口函数
排序:
row_number(): 排序时从1开始自增,相当于是自增列,1,2,3,4,5...
rank(): 排序时从1开始,出现相同值时空缺,1,2,2,4,4,6...
dense_rank(): 排序时从1开始,出现相同值时不留空缺:1,2,2,3,3,4...
cume_dist: 从小于等于当前值的行数/分组内总行数(占比)比如:统计小于等于当前薪水的行数(人数,一行代表一个人),所占总行数(人数)的比例
percent_rank():分组内当前行的rank值-1/分组内总行数-1
ntile(n): 用于将分组数据按照顺序切分成n片,返回当前切片值,如果切片不均匀,默认正价第一个切片的分布。
ntile不支持rows between,
比如 ntile(2) over(partition by cookieid order by createtime rows between 3 preceding and current row)
分析:
cume_dist
lead(col,n,default)
lag(col,n,default)