- grouparray 将分组的内的多个值,合成一个数组
测试数据表test02:
ca,cb,cc
A,W,1
A,W,2
B,X,1
B,Z,2
B,Z,4
需求:分组取top1
select ca,cb,groupArray(1)(cc) from test02 group by ca,cb
输出结果:
B,Z,[2]
A,W,[1]
B,X,[1]
- 开窗函数
with (select [100,200,300,200,400,500]) as arr
select arrayEnumerate(arr) as row_number,
arrayEnumerateDense(arr) as dense_rank,
arrayEnumerateUniq(arr) as uniqu_rank;
输出结果
row_number dense_number unique_number"
[1,2,3,4,5,6]", "[1,2,3,2,4,5]", "[1,1,1,2,1,1]"
- arraydifference(arr) 数组相邻位相减
with (select [100,200,300,200,400,500]) as arr
select arrayDifference(arr)
输出结果
[0,100,100,-100,200,100]
- neighbor(arr,index) 获取某一些前后相邻的数据
SELECT a, neighbor( a,-1 ) from
(SELECT arrayJoin( [1,2,3,6,34,3,11] ) as a,'u' as b)
输出结果
a neighbor(a,-1)
1,0
2,1
3,2
6,3
34,6
3,34
11,3
- arrayStringConcat 将数组中的元素按指定连接符连接
注:非字符串数组不能拼接
SELECT arrayStringConcat( ['1','2','3','6','34','3','11'] , '-')
输出结果:
1-2-3-6-34-3-11
- hasAny 判断数组中是否包含某些值,包含其一返回1,否则返回0
SELECT hasAny( [1,2,3,6,34,3,11] , [3,1])
输出结果:1
- arrayDistinct 数组去重
SELECT arrayDistinct([1,2,3,6,34,3,11])
输出结果:[1,2,3,6,34,11]
- 时间转换函数
- toDate() 字符型日期转日期型
- toDateTime() 字符型日期带时分秒 转 日期型
- parseDateTimeBestEffort 更复杂的日期解析函数
parseDateTimeBestEffort(toString(20191201000407)) as wet
输出结果:2019-12-01 00:04:07
parseDateTimeBestEffortOrNull 遇到无法解析的字符串返回null
-
条件函数
- if(cond,then,else) 单条件输入输出
- multiif(cond1,then1,cond2,then2,..else) 多条件输入输出