

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 聚合函数
<a name="aggregate-functions"></a>

Timestream LiveAnalytics 支持以下聚合函数。


| 函数 | 输出数据类型 | 说明 | 
| --- | --- | --- | 
| arbitrary(x) | [与输入相同] | 返回 x 的任意非 null 值（如果存在）。<pre>SELECT arbitrary(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`1` | 
| array\_agg(x) | 数组<[与输入相同] | 返回由输入 x 个元素创建的数组。<pre>SELECT array_agg(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`[ 1,2,3,4 ]` | 
| avg(x) | double | 返回所有输入值的平均值（算术平均值）。<pre>SELECT avg(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`2.5` | 
| bool\_and(boolean) every(boolean)  | 布尔值 | 如果每个输入值都为 TRUE，则返回 TRUE，否则返回 FALSE。<pre>SELECT bool_and(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre><br />示例结果：`false` | 
| bool\_or(boolean) | 布尔值 | 如果任何输入值为 TRUE，则返回 TRUE，否则返回 FALSE。<pre>SELECT bool_or(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre><br />示例结果：`true` | 
| count(\*) count(x) | bigint | count(\*) 返回输入行的数量。<br />count(x) 返回非 null 输入值的数量。<pre>SELECT count(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre><br />示例结果：`4` | 
| count\_if(x)  | bigint | 返回 TRUE 输入值的数量。<pre>SELECT count_if(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre><br />示例结果：`3` | 
| geometric\_mean(x) | double | 返回所有输入值的几何平均值。<pre>SELECT geometric_mean(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`2.213363839400643` | 
| max\_by(x, y)  | [与 x 相同] | 返回所有输入值中与 y 的最大值相关联的 x 值。<pre>SELECT max_by(t.c1, t.c2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre><br />示例结果：`d` | 
| max\_by(x, y, n)  | 数组<[与 x 相同]> | 返回与所有输入 y 值中降序排列的 n 个最大值相关联的 n 个 x 值。<pre>SELECT max_by(t.c1, t.c2, 2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre><br />示例结果：`[ d,c ]` | 
| min\_by(x, y) | [与 x 相同] | 返回所有输入值中与 y 的最小值相关联的 x 值。<pre>SELECT min_by(t.c1, t.c2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre><br />示例结果：`a` | 
| min\_by(x, y, n) | 数组<[与 x 相同]> | 返回与所有输入 y 值中升序排列的 n 个最小值相关联的 n 个 x 值。<pre>SELECT min_by(t.c1, t.c2, 2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre><br />示例结果：`[ a,b ]` | 
| max(x) | [与输入相同] | 返回所有输入值的最大值。<pre>SELECT max(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`4` | 
| max(x, n) | 数组<[与 x 相同]> | 返回 x 的所有输入值中的 n 个最大值。<pre>SELECT max(t.c, 2) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`[ 4,3 ]` | 
| min(x) | [与输入相同] | 返回所有输入值的最小值。<pre>SELECT min(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`1` | 
| min(x, n) | 数组<[与 x 相同]> | 返回 x 的所有输入值中的 n 个最小值。<pre>SELECT min(t.c, 2) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`[ 1,2 ]` | 
| sum(x)  | [与输入相同] | 返回所有输入值的总和。<pre>SELECT sum(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`10` | 
| bitwise\_and\_agg(x) | bigint | 返回所有输入值以 2 补码表示形式的按位与结果。<pre>SELECT bitwise_and_agg(t.c) FROM (VALUES 1, -3) AS t(c)</pre><br />示例结果：`1` | 
| bitwise\_or\_agg(x) | bigint | 返回所有输入值以 2 补码表示形式的按位或结果。<pre>SELECT bitwise_or_agg(t.c) FROM (VALUES 1, -3) AS t(c)</pre><br />示例结果：`-3` | 
| approx\_distinct(x)  | bigint | 返回输入值中不同值的大致数量 此函数提供对 count(DISTINCT x) 的近似值。如果所有输入值均为 null，则返回零。此函数应生成 2.3% 的标准误差，即所有可能集合（近似正态）误差分布的标准差。该函数不能保证对任何特定输入集的误差存在上限。<pre>SELECT approx_distinct(t.c) FROM (VALUES 1, 2, 3, 4, 8) AS t(c)</pre><br />示例结果：`5` | 
| approx\_distinct(x, e) | bigint | 返回输入值中不同值的大致数量 此函数提供对 count(DISTINCT x) 的近似值。如果所有输入值均为 null，则返回零。此函数应生成不大于 e 的标准误差，即所有可能集合（近似正态）误差分布的标准差。该函数不能保证对任何特定输入集的误差存在上限。此函数的当前实施要求 e 在 [0.0040625，0.26000] 范围内。<pre>SELECT approx_distinct(t.c, 0.2) FROM (VALUES 1, 2, 3, 4, 8) AS t(c)</pre><br />示例结果：`5` | 
| approx\_percentile(x, percentage)  | [与 x 相同] | 返回所有输入值 x 在给定百分比下的近似百分位数。百分比值必须介于零到一之间，且对所有输入行保持恒定。<pre>SELECT approx_percentile(t.c, 0.4) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`2` | 
| approx\_percentile(x, percentages)  | 数组<[与 x 相同]> | 返回所有输入值 x 在每个指定百分比下的近似百分位数。百分比数组的每个元素都必须介于零到一之间，且该数组对所有输入行必须保持恒定。<pre>SELECT approx_percentile(t.c, ARRAY[0.1, 0.8, 0.8]) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`[ 1,4,4 ]` | 
| approx\_percentile(x, w, percentage)  | [与 x 相同] | 返回所有输入值 x 在百分比 p 处使用单项权重 w 计算的近似加权百分位数。权重必须是至少为 1 的整数值。该值实际上是百分位数集中值 x 的复制计数。p 值必须介于零到一之间，且对所有输入行保持恒定。<pre>SELECT approx_percentile(t.c, 1, 0.1) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`1` | 
| approx\_percentile(x, w, percentages)  | 数组<[与 x 相同]> | 返回所有输入值 x 在数组中指定百分比处使用每项权重 w 计算的近似加权百分位数。权重必须是至少为 1 的整数值。该值实际上是百分位数集中值 x 的复制计数。数组的每个元素都必须介于零到一之间，且该数组对所有输入行必须保持恒定。<pre>SELECT approx_percentile(t.c, 1, ARRAY[0.1, 0.8, 0.8]) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`[ 1,4,4 ]` | 
| approx\_percentile(x, w, percentage, accuracy) | [与 x 相同] | 返回所有输入值 x 在百分比 p 处使用单项权重 w 计算的近似加权百分位数，最大等级误差为精度。权重必须是至少为 1 的整数值。该值实际上是百分位数集中值 x 的复制计数。p 值必须介于零到一之间，且对所有输入行保持恒定。精度必须是大于零且小于一的值，且对所有输入行保持恒定。<pre>SELECT approx_percentile(t.c, 1, 0.1, 0.5) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre><br />示例结果：`1` | 
| corr(y, x) | double | 返回输入值的相关系数。<pre>SELECT corr(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre><br />示例结果：`1.0` | 
| covar\_pop(y, x) | double | 返回输入值的总体协方差。<pre>SELECT covar_pop(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre><br />示例结果：`1.25` | 
| covar\_samp(y, x)  | double | 返回输入值的样本协方差。<pre>SELECT covar_samp(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre><br />示例结果：`1.6666666666666667` | 
| regr\_intercept(y, x) | double | 返回输入值的线性回归截距。y 为因变量，x 为自变量。<pre>SELECT regr_intercept(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre><br />示例结果：`0.0` | 
| regr\_slope(y, x) | double | 返回输入值的线性回归斜率。y 为因变量，x 为自变量。<pre>SELECT regr_slope(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre><br />示例结果：`1.0` | 
| skewness(x) | double | 返回所有输入值的偏度。<pre>SELECT skewness(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre><br />示例结果：`0.8978957037987335` | 
| stddev\_pop(x) | double | 返回所有输入值的总体标准差<pre>SELECT stddev_pop(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre><br />示例结果：`2.4166091947189146` | 
| stddev\_samp(x) stddev(x) | double | 返回所有输入值的样本标准差。<pre>SELECT stddev_samp(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre><br />示例结果：`2.701851217221259` | 
| var\_pop(x)  | double | 返回所有输入值的总体方差。<pre>SELECT var_pop(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre><br />示例结果：`5.840000000000001` | 
| var\_samp(x) variance(x)  | double | 返回所有输入值的样本方差。<pre>SELECT var_samp(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre><br />示例结果：`7.300000000000001` | 