聚合函数
本文介绍聚合函数的语法规则,包括参数解释、函数示例等。
函数列表
函数 |
描述 |
---|---|
用于估算x中不重复值的个数。 |
|
用于对x进行正序排列,返回处于percentage位置的数值。 |
|
用于返回x中任意一个非空的值。 |
|
查询y为最大值时对应的x值,或查询最大的n个y值对应的x值。 |
|
查询y为最小值时对应的x值,或查询最小的n个y值对应的x值。 |
|
用于计数。 |
|
用于查询x中最大的值。 |
|
用于查询x中最小值。 |
|
用于计算x的算术平均值。 |
approx_distinct函数
用于估算x中不重复值的个数。
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段 |
任意 |
是 |
e |
自定义标准误差 |
double类型,取值为[0.0115, 0.26] |
否 |
返回值类型:bigint类型
- 示例1:使用approx_distinct函数估算不重复的clientIp字段值,标准误差为2.3%。
表3 查询分析结果 类型
场景
查询语句
SELECT approx_distinct(clientIp)
返回结果
1
- 示例2:使用approx_distinct函数估算不重复的clientIp字段值, 自定义标准误差为10%。
表4 查询分析结果 类型
场景
查询语句
SELECT approx_distinct(clientIp, 0.1)
返回结果
1
approx_percentile函数
用于对x进行正序排列,返回处于percentage位置的数值。
- 对于x进行正序排列,返回处于percentage位置的x,返回结果为double类型。
- 对x进行正序排列,返回处于percentage01、percentage02位置的x,返回结果为array(double,double)类型。
- 对x和权重的乘积进行正序排列,返回大约处于percentage位置的x,返回结果为double类型。
- 对x和权重的乘积进行正序排列,返回处于percentage01、percentage02位置的x,返回结果为array(double,double)类型。
语法:approx_percentile(x, weight, array[percentage01, percentage02...])
- 对x和权重的乘积进行正序排列,返回大约处于percentage位置的x,返回结果为double类型。支持设置返回结果的准确度。
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段 |
double |
是 |
percentage |
百分比值,取值范围为[0,1]。 |
double |
是 |
weight |
权重,大于1的整数。 设置权重后,系统根据x与权重的乘积进行排序。 |
int |
否 |
accuracy |
准确度,取值范围为(0,1)。 |
double |
否 |
返回值类型:double类型或array(double,...,double)类型
- 示例1:对request_time列进行排序后,返回大约处于50%位置的request_time字段的值。
表6 查询分析结果 类型
场景
查询语句
SELECT approx_percentile(request_time, 0.5)
返回结果
45.0
- 示例2:对request_time列进行排序后,返回处于10%、20%及70%位置的request_time字段的值。
表7 查询分析结果 类型
场景
查询语句
SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
返回结果
[17.0, 24.0, 59.0]
- 示例3:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于50%位置的request_time字段的值, 权重值为60。
表8 查询分析结果 类型
场景
查询语句
SELECT approx_percentile(request_time, 60, 0.5)
返回结果
45.0
- 示例4:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于80%和90%位置的request_time字段的值,权重值为60。
表9 查询分析结果 类型
场景
查询语句
SELECT approx_percentile(request_time, 60, array[0.8, 0.9])
返回结果
[66.0,73.0]
- 示例5:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于50%位置的request_time字段的值,权重值为60,准确度为0.2。
表10 查询分析结果 类型
场景
查询语句
SELECT approx_percentile(request_time, 60, 0.5, 0.2)
返回结果
45.0
arbitrary函数
用于返回x中任意一个非空的值。
语法:arbitrary(x)
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段。 |
任意 |
是 |
返回值类型:与参数值的数据类型一致。
示例:select arbitrary(region)
类型 |
场景 |
---|---|
查询语句 |
arbitrary(region) |
返回结果 |
r2 |
max_by函数
查询y为最大值时对应的x值,或查询最大的n个y值对应的x值。
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段。 |
任意数据类型 |
是 |
y |
原始字段。 |
任意数据类型 |
是 |
n |
大于0的整数。 |
int |
否 |
返回值类型:与参数值的数据类型一致。
- 示例1:统计请求时长最大时对应的请求方法。
表14 查询分析结果 类型
场景
查询语句
SELECT max_by(request_method, request_time)
返回结果
GET
- 示例2:统计请求时长最大的3个请求对应的请求方法。
表15 查询分析结果 类型
场景
查询语句
SELECT max_by(request_method, request_time, 3)
返回结果
["GET","GET","GET"]
min_by函数
查询y为最小值时对应的x值,或查询最小的n个y值对应的x值。
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段。 |
任意数据类型 |
是 |
y |
原始字段。 |
任意数据类型 |
是 |
n |
大于0的整数。 |
int |
否 |
返回值类型:与参数值的数据类型一致
- 示例1:统计请求时长最小时对应的请求方法。
表17 查询分析结果 类型
场景
查询语句
SELECT min_by(request_method, request_time)
返回结果
POST
- 示例2:统计请求时长最小的3个请求对应的请求方法。
表18 查询分析结果 类型
场景
查询语句
SELECT min_by(request_method, request_time, 3)
返回结果
["POST","POST","POST"]
count函数
用于计数。
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段。 |
任意 |
是 |
返回值类型:int
示例:select COUNT(*)
类型 |
场景 |
---|---|
查询语句 |
COUNT(*) |
返回结果 |
1 |
max函数
用于查询x中最大的值。
参数名称 |
描述 |
类型 |
是否必选 |
---|---|---|---|
x |
原始字段。 |
任意数据 |
是 |
n |
返回最大值的个数 |
正整数 |
否 |
返回值类型:与参数值的数据类型一致。
- 示例1:查询x中的最大值
表22 查询分析结果 类型
场景
查询语句
SELECT max(x)
返回结果
99.0
- 示例2:查询x中的最大的2个值
表23 查询分析结果 类型
场景
查询语句
SELECT max(x, 2)
返回结果
[99.0, 99.0]