聚合函数

聚合函数对多个值执行运算以创建概要结果。

以下列表介绍了可用于列和度量列的聚合规则。此列表还包含可在为分析创建计算项时使用的函数。

  • 默认值 — 应用语义模型中或者分析的原始作者要求的默认聚合规则。此选项不适用于分析中的计算项。

  • 由服务器决定 — 应用由 Oracle Analytics 确定的聚合规则(例如,在语义模型中定义的规则)。在 Oracle Analytics 内针对简单规则(如求和、求最小值和求最大值)执行聚合。此选项不适用于“布局”窗格中的度量列,也不适用于分析中的计算项。

  • 总和 - 计算通过将结果集中的所有值相加获得的总和。此选项用于包含数值的项。

  • 最小值 - 计算结果集中的行的最小值 (最小数值)。此选项用于包含数值的项。

  • 最大值 - 计算结果集中的行的最大值 (最大数值)。此选项用于包含数值的项。

  • 平均值 - 计算结果集中的项的平均值 (均值)。此选项用于包含数值的项。表和数据透视表中的平均值舍入为最接近的整数。

  • 第一个 - 在结果集中,选择度量的项的第一个匹配项。对于计算项,请根据“所选”列表中的显示内容选择第一个成员。此选项在编辑列公式对话框中不可用。

  • 最后一个 - 在结果集中,选择该项的最后一个匹配项。对于计算项,请根据“所选”列表中的显示内容选择最后一个成员。此选项在编辑列公式对话框中不可用。

  • 计数 — 计算结果集中项对应的值为非空值的行数。该项通常为列名,此种情况下,将返回该列中其值为非空值的行数。

  • 相异值计数 — 为“计数”函数添加相异处理,这意味着该项的每个相异匹配项仅计算一次。

  • - 不应用聚合。此选项不适用于分析中的计算项。

  • 基于报表的总计(如果适用) — 如果未选择此选项,请指定 Oracle Analytics 应根据整个结果集计算总计,然后对度量应用任何筛选器。此选项在编辑列公式对话框中不可用,也不适用于分析中的计算项。该选项仅适用于属性列。

函数 示例 说明 语法

AGGREGATE AT

AGGREGATE(sales AT year)

基于数据模型层次中您指定的级别聚合列。

  • measure 是度量列的名称。
  • level 是要进行聚合的级别。

您可以选择指定多个级别。您不能指定这样的级别:该级别源自的维所包含的级别将用作您在第一个参数中指定的度量的度量级别。例如,如果 month 源自用作 yearly_sales 度量级别的同一时间维,则不能将该函数写为 AGGREGATE(yearly_sales AT month)

AGGREGATE(measure AT level [, level1, levelN])

AGGREGATE BY AGGREGATE(sales BY month, region) 基于一个或多个维列聚合度量。
  • measure 是要聚合的度量列的名称。

  • column 是要基于其聚合的维列。
您可以基于多列聚合度量。
AGGREGATE(measure BY column [, column1, columnN])

AVG

Avg(Sales)

计算一组数字值的平均值。

AVG(expr)

AVGDISTINCT

 

计算表达式中所有相异值的平均值。

AVG(DISTINCT expr)

BIN

BIN(revenue BY productid, year WHERE productid > 2 INTO 4 BINS RETURNING RANGE_LOW)

将给定的数值表达式分类到指定数量的等宽存储桶。该函数可以返回收集器编号或者收集器间隔的两个端点之一。numeric_expr 是要收集的度量或数值属性。BY grain_expr1,…, grain_exprN 是一系列表达式,用来定义 numeric_expr 的计算粒度。BY 对于度量表达式为必需,对于属性表达式为可选。WHERE 是将数值分配给收集器前应用于 numeric_expr 的筛选器;INTO number_of_bins BINS 是将返回的收集器的编号;BETWEEN min_value AND max_value 是用于最外层收集器端点的最小值和最大值;RETURNING NUMBER 指示返回值应为收集器编号(1、2、3、4 等)。这是默认设置。RETURNING RANGE_LOW 指示收集器间隔的下限值,RETURNING RANGE_HIGH 指示收集器间隔的上限值

BIN(numeric_expr [BY grain_expr1, ..., grain_exprN] [WHERE condition] INTO number_of_bins BINS [BETWEEN min_value AND max_value] [RETURNING {NUMBER | RANGE_LOW | RANGE_HIGH}])

BottomN

 

按从 1 到 n 的顺序依次排列表达式参数中最小的 n 个值,1 对应于最小的数值。

expr 是求值结果为数值的任意表达式。integer 是任意正整数。它表示结果集内显示的最低排名的数字,1 为最低排名。

BottomN(expr, integer)

COUNT

COUNT(Products)

确定具有非空值的项的数量。

COUNT(expr)

COUNTDISTINCT

 

对 COUNT 函数进行相异处理。

expr 为任意表达式。

COUNT(DISTINCT expr)

COUNT*

SELECT COUNT(*) FROM Facts

计算行数。

COUNT(*)

First

First(Sales)

选择表达式参数的第一个非空返回值。First 函数以明确定义的维中指定的最详细级别运行。

First([NumericExpression)]

Last

Last(Sales)

选择表达式的最后一个非空返回值。

Last([NumericExpression)]

MAVG

 

计算结果集中最后 n 行数据(包括当前行)的移动平均值。

expr 是求值结果为数值的任意表达式。integer 是任意正整数。它表示最后 n 行数据的平均值。

MAVG(expr, integer)

MAX

MAX(Revenue)

计算符合数值表达式参数要求的行的最大值(最大数值)。

MAX(expr)

MEDIAN

MEDIAN(Sales)

计算符合数值表达式参数要求的行的中间值。如果有偶数个行,则中间值为两个中间行的平均值。此函数始终返回双精度值。

MEDIAN(expr)

MIN

MIN(Revenue)

计算符合数值表达式参数要求的行的最小值。

MIN(expr)

NTILE

 

根据用户指定的范围确定值的排名。它返回整数,表示任意排名范围。numTiles =100 的 NTILE 返回的结果一般称为“百分比段”(从 1 到 100 的数值,100 表示最高)。

expr 是求值结果为数值的任意表达式。numTiles 是非空值正整数,表示磁贴数量。

NTILE(expr, numTiles)

PERCENTILE

 

计算符合数值表达式参数要求的每个值的百分比段排名。百分比段排名范围介于 0(百分之零)和 1(百分之百)之间。

expr 是求值结果为数值的任意表达式。

PERCENTILE(expr)

RANK

RANK(chronological_key, null, year_key_columns)

计算符合数值表达式参数要求的每个值的排名。排名 1 分配给最大的数字,下一个连续的整数(2、3、4...)依次分配给后续的每个排名。如果某些值相等,则分配相同的排名(例如,1、1、1、4、5、5、7...)。

expr 是求值结果为数值的任意表达式。

RANK(expr)

STDDEV

STDDEV(Sales) STDDEV(DISTINCT Sales)

返回一组值的标准差。返回类型始终为双精度值。

STDDEV(expr)

STDDEV_POP

STDDEV_POP(Sales) STDDEV_POP(DISTINCT Sales)

使用总体方差和标准差的计算公式返回一组值的标准差。

STDDEV_POP([NumericExpression])

SUM

SUM(Revenue)

计算通过累加符合数值表达式参数要求的所有值得出的总和。

SUM(expr)

SUMDISTINCT

 

计算通过累加符合数值表达式参数要求的所有相异值得出的总和。

expr 是求值结果为数值的任意表达式。

SUM(DISTINCT expr)

TOPN

 

按从 1 到 n 的顺序依次排列表达式参数中最大的 n 个值,1 对应于最大的数值。

expr 是求值结果为数值的任意表达式。integer 是任意正整数。它表示结果集内显示的最高排名的数字,1 为最高排名。

TOPN(expr, integer)

有关使用聚合函数的提示

下面的这些提示可帮助您在工作簿中使用聚合函数时获得最佳结果。

提示

  • FirstLast。避免对 100% 堆叠条形图类型使用“第一个”和“最后一个”聚合。将当前日期添加到 By 可向查询添加粒度,这将提取加上当前日期的可视化的所有行。然后,Last 函数返回结果集中的最后一行,此内容因从源返回数据的方式而异。
  • Min — 使用 Min 计算一组行中的最小值。要查找一组列中的最小值,请使用 Evaluate。例如:

    evaluate('least(%1,%2,%3)',column date 1,date 2,date 3)