跳转到内容
搜索文档

聚合函数

最后更新 查看 MarkdownAgent 设置

count

用法:

count()
count(DISTINCT column_name)

count 是返回每个分组或结果集中行数的聚合函数。

count 也可用于计数每列中不同(唯一)值的数量:

示例:

-- 返回总行数
count()
-- 返回列中不同值的数量
count(DISTINCT column_name)

sum

用法:

sum([DISTINCT] column_name)

sum 是一个聚合函数,返回每个分组或结果集中所有行对应的列值之和。sum 也支持 DISTINCT,但在这种情况下,它仅对该列中唯一的值求和。

示例:

-- 返回所有项目的总成本
sum(item_cost)
-- 返回所有唯一项目成本的总和
sum(DISTINCT item_cost)

avg

用法:

avg([DISTINCT] column_name)

avg 是一个聚合函数,返回每个分组或结果集中所有行对应的列值的平均值。avg 也支持 DISTINCT,但在这种情况下,它仅对该列中唯一的值进行平均计算。

示例:

-- 返回项目成本的平均值
avg(item_cost)
-- 返回唯一项目成本的平均值
avg(DISTINCT item_cost)

min

用法:

min(column_name)

min 是一个聚合函数,返回所有行中某一列的最小值。

示例:

-- 返回项目成本的最小值
min(item_cost)

max

用法:

max(column_name)

max 是一个聚合函数,返回所有行中某一列的最大值。

示例:

-- 返回项目成本的最大值
max(item_cost)

quantileExactWeighted

用法:

quantileExactWeighted(q)(column_name, weight_column_name)

quantileExactWeighted 是一个聚合函数,返回每个分组或结果集中指定列的所有行在第 q 个分位数的值。每行将由 weight_column_name 中的值进行加权。通常这会是 _sample_interval(有关更多信息,请参阅采样 (Sampling))。

示例:

-- 估算 <double1> 的中位数
quantileExactWeighted(0.5)(double1, _sample_interval)

-- 在查询时间表中,估算第 95 百分位数的查询时间
quantileExactWeighted(0.95)(query_time, _sample_interval)

为了向后兼容,该函数也可以用作 quantileWeighted(q, column_name, weight_column_name)

argMax New

用法:

argMax(arg, val)

argMax 是一个聚合函数,返回与 val 的最大值相对应的 arg 值。

如果多个 arg 值均具有 val 的最大值,则将返回其中的任意一个。

示例:

-- 查找 <double1> 值最高的行对应的 <blob1> 值
argMax(blob1, double1)

-- 从采样最重的行中查找 <blob1> 值
argMax(blob1, _sample_interval)

argMin New

用法:

argMin(arg, val)

argMin 是一个聚合函数,返回与 val 的最小值相对应的 arg 值。

如果多个 arg 值均具有 val 的最小值,则将返回其中的任意一个。

示例:

-- 查找 <double1> 值最低的行对应的 <blob1> 值
argMin(blob1, double1)

-- 从采样最轻的行中查找 <blob1> 值
argMin(blob1, _sample_interval)

first_value New

用法:

first_value(column_name)

first_value 是一个聚合函数,返回所提供列的第一个值。

示例:

-- 查找 <blob1> 的最早值
SELECT first_value(blob1) FROM my_dataset ORDER BY timestamp ASC

last_value New

用法:

last_value(column_name)

last_value 是一个聚合函数,返回所提供列的最后一个值。

示例:

-- 查找 <blob1> 的最早值
SELECT last_value(blob1) FROM my_dataset ORDER BY timestamp DESC

topK New

用法:

topK(N)(column)

topK 是一个聚合函数,返回一列中最常见的 N 个值。

N 是可选的,默认值为 10

示例:

-- 查找 <double1> 的 10 个最常见的值
SELECT topK(double1) FROM my_dataset

-- 查找 <blob1> 的 15 个最常见的值
SELECT topK(15)(blob1) FROM my_dataset

topKWeighted New

用法:

topKWeighted(N)(column, weight_column)

topKWeighted 是一个聚合函数,返回一列中最常见的 N 个值,并由第二列进行加权。

N 是可选的,默认值为 10

示例:

-- 查找 <double1> 的 10 个最常见的值,由 `_sample_interval` 加权
SELECT topKWeighted(double1, _sample_interval) FROM my_dataset

-- 查找 <blob1> 的 15 个最常见的值,由 `_sample_interval` 加权
SELECT topKWeighted(15)(blob1, _sample_interval) FROM my_dataset

countIf New

用法:

countIf(<expr>)

countIf 是一个聚合函数,返回结果集中的行数,但仅对提供的表达式评估为 true 的行进行计数。

示例:

-- 返回 double1 大于 5 的行数
countIf(double1 > 5)

sumIf New

用法:

sumIf(<expr>, <expr>)

sumIf 是一个聚合函数,返回结果集中所有行对应的第一个表达式之和,但仅包括第二个表达式评估为 true 的行。

示例:

-- 返回另一列 in_stock 不为零的所有项目的 item_cost 列之和
sumIf(item_cost, in_stock > 0)

avgIf New

用法:

avgIf(<expr>, <expr>)

avgIf 是一个聚合函数,返回结果集中所有行对应的表达式的平均值,但仅包括第二个表达式评估为 true 的行。

示例:

-- 返回另一列 in_stock 不为零的 item_cost 列的平均值
avgIf(item_cost, in_stock > 0)

这篇文档对您有帮助吗?