• clickhouse-(04)-常用高阶函数


    一、去重

    1.arrayDistinct

    对数组进行去重

    SELECT arrayDistinct( [1,2,3,6,34,3,11])
    

    2.arrayUniq

    计算数组中有多少个不重复的值

    SELECT arrayUniq( [1,2,3,6,34,3,11])
    

    3.arrayCompact

    对数组内数据实现相邻去重

    SELECT arrayCompact([1, 2, 2, 3, 2, 3, 3])
    

    二、数组属性

    1.arrayJoin

    对数组进行展开操作,行变列

    SELECT arrayJoin( [1,2,3,6,34,3,11] ) as a
    

    2.arrayFilter

    筛选出数组中满足条件的数据

    SELECT a from (SELECT arrayFilter(x->x%2=0, [1,2,3,6,34,3,11]) as a
    

    3.arrayEnumerate

    返回数组下标

    SELECT arrayEnumerate([1,2,3,6,34,3,11])
    

    4.arrayReduce

    对数组进行聚合操作,如有min 、max、avg 等

    SELECT arrayReduce('avg', [1,2,3,6,34,3,11] )
    

    5.arrayEnumerateDense

    标记出数组中相同的元素

    SELECT arrayEnumerateDense( [1,2,3,6,34,3,11] )
    

    6.hasAny

    判断数组中是否包含某些值中任意一个值,若包含则返回1,否则返回0

    SELECT hasAny( [1,2,3,6,34,3,11] , [3,4])
    

    7.hasAll

    判断数组中是否包含某些值中所有值,若包含则返回1,否则返回0

    SELECT hasAll( [1,2,3,6,34,3,11] , [3,4])
    

    8.arrayWithConstant

    生成一个指定长度的数组

    SELECT arrayWithConstant( 3, 'a')
    

    三、切割/拼接

    1.arrayStringConcat

    将数组元素按照给定分隔符进行拼接,返回拼接后的字符串(数组元素必须为String类型)

    SELECT arrayStringConcat( ['2020','12','19'], '-') 
    

    2.arraySlice

    对数组进行切割 ,后面两个参数分别是切割的位置和切割后的段数

    SELECT arraySlice( [1,2,3,6,34,3,11],-3,2)
    

    四、排序

    1.arraySort

    对数组进行升序

    SELECT a from (SELECT arraySort([1,2,3,6,34,3,11]) as a)
    

    2.arrayReverseSort

    对数组进行降序

    SELECT a from (SELECT arrayReverseSort([1,2,3,6,34,3,11]) as a)
    

    五、添加/删除首尾元素

    1.arrayPushFront

    在数组首位添加元素

    SELECT arrayPushFront( [1,2,3,6,34,3,11] , 8)
    

    2.arrayPushBack

    在数组末尾添加元素

    SELECT arrayPushBack( [1,2,3,6,34,3,11] , 8)
    

    3.arrayPopFront

    删除数组中第一个元素

    SELECT arrayPopFront( [1,2,3,6,34,3,11] )
    

    4.arrayPopBack

    删除数组中最后一个元素

    SELECT arrayPopBack( [1,2,3,6,34,3,11] )
    

    六、计算差值

    1.arrayDifference

    计算数组中前后两个值的差值部分,该位=当前-前者(不包括第一个数,结果第一位默认为0)

    SELECT arrayDifference( [1,2,3,6,34,3,11] )
    

    2.runningDifference

    计算某一列前后数值的差值,该位=当前-前者(不包括第一个数,结果第一位默认为0)

    select a,runningDifference(a)  from (SELECT arrayJoin( [1,2,3,6,34,3,11]) as a)
    
  • 相关阅读:
    SDUT 2772 数据结构实验之串一:KMP简单应用
    SDUT 3346 数据结构实验之二叉树七:叶子问题
    SDUT 3342 数据结构实验之二叉树三:统计叶子数
    SDUT 3345 数据结构实验之二叉树六:哈夫曼编码
    SDUT 3343 数据结构实验之二叉树四:还原二叉树
    SDUT 3340 数据结构实验之二叉树一:树的同构
    SDUT 3344 数据结构实验之二叉树五:层序遍历
    SDUT 3341 数据结构实验之二叉树二:遍历二叉树
    Jmeter入门14 后置处理器JSON Extractor 提取json的多个值
    Jmeter入门13 jmeter发送application/octet-stream二进制流数据
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14852999.html
Copyright © 2020-2023  润新知