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)
    
  • 相关阅读:
    NodeJS 难点(网络,文件)的 核心 stream 二:stream是什么
    NodeJS 难点(网络,文件)的 核心 stream 一:Buffer
    了解了这些才能开始发挥jQuery的威力
    一般公司的大体要求
    js 的垃圾回收器 原理 坑 优化-- 待续
    iframe 问题集合
    图片预加载 js css预加载
    各种插件
    Django REST framework快速入门指南
    Vue.js devtool插件安装后无法使用的解决办法
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14852999.html
Copyright © 2011-2022 走看看