ch版本:20.4.2.9
要实现非时间列lag能力
有两列:stime和states
主要用到的函数:
arraysort函数是对array进行排序,一般来说arraysort是针对一个列,但是我们这哥states是没有办法进行排序的,所以借助stime这一列进行辅助排序
select arraymap(k,l->(k,l),
arraysort((x,y)->y,grouparray(states),groupbyarray(stime)) as arr1,
arrayPopBack(arr1,arrayPushFront(arr1,toString(0)))) as arr2
from table;
arraySort([func,] arr, …)
func是可选的,如果func指定了,那么sort的依据就是func返回的那列进行排序,其他列进行返回,sql中,依据stime进行排序,然后返回我们需要的states这一列