zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    精简shell基础
    Centos7.4下安装Jumpserver 1.0.0(支持windows组件)
    二.Flask 学习模板
    一、Flask路由介绍
    web爬虫,BeautifulSoup
    web爬虫,requests请求
    django之Form组件补充
    中间件和Django缓存
    django之Form组件
    django from表单验证
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14852999.html
Copyright © 2011-2022 走看看