ClickHouse--17--聚合函数总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 环境
    • 1.创建clickhouse表
    • 2.插入数据
  • 函数
    • (1)count:计算行数
    • (2)min:计算最小值
    • (3)max:计算最大值
    • (4)sum:计算总和,只能计算数字之和
    • (5)avg:算数平均值,仅支持数字
    • (6)any: 选择第一个遇到的值
    • (7)anyHeavy:列出频繁出现的值,一般情况,结果是不确定的
    • (8)anylast:选出最后一个出现的值
          • AggregateFunction(anyLast, String) ==不支持分布式表==
          • SimpleAggregateFunction(anyLast, String) ==不支持分布式表==
    • (9)argMin
    • (10)argMax:类比argMin
    • (11)avgWeighted(x, weight):加权算数平均值,x为值,weight为值的加权
    • (12)topK(num)(col):
    • (13)topKWeighted(num)(col,weight):
    • (14)groupArray:生成数组
    • (15)groupUniqArray:类似于groupArray,不过会将生成的数组去重
    • (16)groupArrayInsertAt:参数指定位置插入数组
    • (17)groupArraySample(max_size)(arg)
    • (18)uniq:计算字段去重后的近似数量
    • (19)uniqExact:计算不同参数值的准确数量
    • (20)uniqCombined:
    • (21)quantile(level)(arg):
    • (22)quantiles(level1,level2...)(arg):可以同时计算多个分位数,返回结果为数组


环境

1.创建clickhouse表

CREATE TABLE ck_test
(`id` String COMMENT 'id',`int_1` UInt32 COMMENT '整型列1',`int_2` UInt32 COMMENT '整型列2',`str_1` String COMMENT '字符串列1',`str_2` String COMMENT '字符串列2'
)
ENGINE = MergeTree
ORDER BY id

2.插入数据

insert into ck_test values (1,1,10,'a','A'),(2,2,12,'b','B'),(3,3,13,'c','C'),(4,4,14,'d','D'),(5,5,15,'e','E'),(6,6,15,'f','F')(7,6,15,'f','F');    

在这里插入图片描述
在这里插入图片描述

此外,如果出现了临时分区还没有合并的情况,any方法查询的结果,在合并前和合并后的结果是不一样的

函数

在这里插入图片描述

(1)count:计算行数

在这里插入图片描述
在这里插入图片描述

(2)min:计算最小值

在这里插入图片描述

(3)max:计算最大值

在这里插入图片描述

(4)sum:计算总和,只能计算数字之和

在这里插入图片描述

(5)avg:算数平均值,仅支持数字

select avg(int_1),avg(int_2) from ck_test;

(6)any: 选择第一个遇到的值

在这里插入图片描述

(7)anyHeavy:列出频繁出现的值,一般情况,结果是不确定的

在这里插入图片描述

(8)anylast:选出最后一个出现的值

在这里插入图片描述

AggregateFunction(anyLast, String) 不支持分布式表
SimpleAggregateFunction(anyLast, String) 不支持分布式表

(9)argMin

在这里插入图片描述
在这里插入图片描述

(10)argMax:类比argMin

(11)avgWeighted(x, weight):加权算数平均值,x为值,weight为值的加权

在这里插入图片描述

(12)topK(num)(col):

返回指定列中出现频率最多的值的数组,数组按照出现频率降序排序,num指定返回数组元素的个数,col为指定的字段
在这里插入图片描述

(13)topKWeighted(num)(col,weight):

类似于topK,col列每一个输入出现的次数,都会乘上weight权重,这个weight可以是类似于col的一个字段
在这里插入图片描述

(14)groupArray:生成数组

在这里插入图片描述
在这里插入图片描述

(15)groupUniqArray:类似于groupArray,不过会将生成的数组去重

(16)groupArrayInsertAt:参数指定位置插入数组

在这里插入图片描述
语法:groupArrayInsertAt(default_x, size)(x, pos)

其中,default_x为默认的在空位上替换的值,size为最终的数组长度,因为数组可能很长,会有空位,所以要用default_x填充

x为要被插入的值组成的数组,从0到pos这个位置都用default_x填充

按我的理解,int_2为15的那一行,应该有e,f,f三个值,不知道为啥只出现了e

(17)groupArraySample(max_size)(arg)

生成采样数组,max_size为数组最大长度,arg可以是字段,也可以是字段拼接的表达式,如concat(‘字符:’,arg1)

在这里插入图片描述
在这里插入图片描述

(18)uniq:计算字段去重后的近似数量

在这里插入图片描述

(19)uniqExact:计算不同参数值的准确数量

在这里插入图片描述

(20)uniqCombined:

计算不同参数值的近似数量,uniq虽然也是近似数量,但uniqCombined消耗内存多,精度也比uniq高

(21)quantile(level)(arg):

计算近似分位数,level是分位数常量,取值范围0-1,arg可以是数字类型,也可以是date,datetime类型

在这里插入图片描述

(22)quantiles(level1,level2…)(arg):可以同时计算多个分位数,返回结果为数组

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rust嵌入式开发之基于await构造应用级临界区

在rust嵌入式开发之await一文中我们讨论了如何用await来实现异步操作的串行化。而并发编程时还有一个更重要的问题需要我们解决:资源竞争。 针对并发时的资源竞争,最简单的办法就是利用系统提供的临界区机制来互斥的使用资源。嵌入式rust提供了critical…

密码学 | 椭圆曲线数字签名方法 ECDSA(上)

目录 1 ECDSA 是什么? 2 理解基础知识 3 为什么使用 ECDSA? 4 基础数学和二进制 5 哈希 6 ECDSA 方程 7 点加法 8 点乘法 9 陷阱门函数! ⚠️ 原文:Understanding How ECDSA Protects Your Data. ⚠️ 写在前面…

<Halcon> 变换矩阵求解

变换矩阵求解 hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate) hom_mat2d_translate通过向量t (Tx,Ty)向齐次二维变换矩阵HomMat2D添加平移,得到平移矩阵;vector_to_rigid( : : Px, Py, Qx, Qy : HomMat2D) vector_to_rigid近似于刚性…

测出Bug就完了?从4个方面教你Bug根因分析

01 现状及场景 🎯 1.缺失bug根因分析环节 工作10年,虽然不是一线城市,也经历过几家公司,规模大的、规模小的都有,针对于测试行业很少有Bug根因环节,主流程基本上都是测试提交bug-开发修改-测试验证-发送报…

rest_framework_mongoengine实现后端的增删改查

rest_framework_mongoengine实现后端增删改查 ‍ 一、增删改查 1. 继承ModelViewSet实现增删改查 父urls.py path("api/testapp/", include("apps.testapp.urls")), # 测试子urls.py # -*- coding: utf-8 -*- from django.urls import path from res…

如何在苹果手机上安装iOS应用的.ipa文件?

哈喽,大家好呀,淼淼又来和大家见面啦,如今移动应用市场不断的发展,许多开发者小伙伴们都选择将他们的应用发布到苹果App Store上,但是,有时候他们可能希望通过直接分享IPA文件来分发他们的App,那…

自定义javax.validation 校验能用 spring

自定义注解 import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.*;Target(ElementType.FIELD) Documented Retention(value RetentionPolicy.RUNTIME) Constraint(validatedBy {IdExistMyTestValidator.class }) public in…

STM32标准库+HAL库 | CPU片内FLASH存储器数据掉电读写

一、片内FLASH 在STM32芯片内部有一个FLASH存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部FLASH中, 由于FLASH存储器的内容在掉电后不会丢失,芯片重新上电复位后&…

ArduPilot开源飞控之ROS系统简介

ArduPilot开源飞控之ROS系统简介 1. 源由2. ROS系统3. 安装2.1 安装Docker2.2 安装ROS2 4. 总结5. 补充资料 1. 源由 之前在ArduPilot开源飞控之硬件SBC分析中讨论过,个人角度最推荐其中两个系统是: Rpanion-server【推荐,简单】BlueOS【推…

SAP Fiori开发中的JavaScript基础知识14 - promise, async, await异步编程

1. 前言 本文将介绍JavaScript中异步编程技术,包括promise, sync, await的使用。 2. Promise 2.1 简介 Promise 是 JavaScript 中用于处理异步操作的一种对象。它代表了一个异步操作的最终完成(或失败)及其结果值。 Promise 对象有三种状…

Unity之Unity面试题(四)

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之Unity面试题(四) TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取…

什么是并行通信、串行通信?什么是全双工、半双工、单工? 什么是异步通信、同步通信? 什么是RS232、RS485?什么是pwm?

什么是并行通信、串行通信? 嵌入式系统中的通信是指两个或两个以上的主机之间的数据互交,这里的主机可以是计算机也可以是嵌入式主机,甚至可以是芯片。主机间通信的方式一般可以分为两类:并行通信和串行通信。并行通信是指多个比特…

华为配置静态ARP示例

华为配置静态ARP示例 组网图形 图1 配置静态ARP组网图 静态ARP简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 静态ARP简介 静态ARP表项是指网络管理员手工建立IP地址和MAC地址之间固定的映射关系。 正常情况下网络中设备可以通过ARP协议进行ARP表项的动态学习&…

Android10以上MediaProject截屏

起因 在系统升级到Android10以上之后,之前的截屏方式不能用了,而且必须将MediaProject放在forground service里面跑才行。网上搜了一圈,都是语焉不详或者没有完整的一个代码应用。只能自己写一个,记录下 代码实现 新建一个Scre…

IO多路转接之poll

目录 1. poll 的基本认识 2. poll 基于 select 的突破 3. poll() 系统调用 3.1. struct pollfd 结构 4. poll() 的 demo 5. poll 的总结 1. poll 的基本认识 poll 是一种多路转接的方案, 它的核心功能和 select 一模一样,我们知道 IO 等待事件就绪…

WebLogic 数据源连接泄露

编码时,有时会忘记释放使用的数据源连接,造成连接泄露,没有连接资源可用。 现象 java.sql.SQLException: Cannot obtain XAConnectionat weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1691)at weblogic.jdbc.jta.DataSource.getConnectionIntern…

论文略读:Window Attention is Bugged: How not to Interpolate Position Embeddings

iclr 2024 reviewer 打分 6666 窗口注意力、位置嵌入以及高分辨率微调是现代Transformer X CV 时代的核心概念。论文发现,将这些几乎无处不在的组件简单地结合在一起,可能会对性能产生不利影响问题很简单:在使用窗口注意力时对位置嵌入进行插…

华为再次布局新行业:合作伙伴已超前谋划,该领域将大有可为

华为布局新行业 华为向外界公布了一个重要信息:在过去的三年里,尽管受到美国的制裁,华为仍然成功地完成了超过13000个元器件的国产替代研发,以及4000多块电路板的迭代开发。 不仅在硬件领域取得了显著成就,在软件和生…

oracle 19c数据库W00n进程使用很多PGA内存资源的分析

今天,客户反馈测试环境的数据库PGA资源不足,报错ORA-04036: 实例使用的 PGA 内存超出 PGA_AGGREGATE_LIMIT;分析是多个W00n进程使用大量PGA-触发了BUG,对应解决办法就是打补丁。(民间办法就是KILL进程、重启数据库&…

大数据面试高频问题:大数据相关基础组件的维护及调优案例大全

目录 1、 Hadoop HDFS 磁盘空间不足问题 2、 Apache Spark Executor 内存溢出问题