表计算函数
1. 概述
通过表计算函数,您可对表中的值执行计算。本文介绍表计算函数及其具体用法。例如您可以计算某个年度和若干年度个别销售额占总额的百分比。
2. 可用的表计算函数
FIRST()
返回从当前行到分区中第一行的行数。例如,下面的视图显示每季度销售额。在 Date 分区中计算 FIRST() 时,第一行与第二行之间的偏移为 -1。
示例:当前行索引为 3 时,FIRST() = -2。
INDEX()
返回分区中当前行的索引,不包含与值有关的任何排序。第一个行索引从 1 开始。例如,下表显示每季度销售额。当在 Date 分区中计算 INDEX() 时,各行的索引分别为 1、2、3、4 等。
示例:对于分区中的第四行,INDEX() = 4。
LAST()
返回从当前行到分区中最后一行的行数。例如,下表显示每季度销售额。在 Date 分区中计算 LAST() 时,最后一行与第二行之间的偏移为 5。
示例:当前行索引为 3(共 7 行)时,LAST() = 4。
SIZE()
返回分区中的行数。例如,下面的视图显示每季度销售额。在 Date 分区中有七行,因此 Date 分区的 Size() 为 7。
示例:当前分区包含五行时 SIZE() = 5。
LOOKUP
返回目标行(指定为与当前行的相对偏移)中表达式的值。使用 FIRST() + n 和 LAST() - n 作为相对于分区中第一行/最后一行的目标偏移量定义的一部分。如果省略了偏移量,则可以在字段菜单上设置要比较的行。如果无法确定目标行,则此函数返回 NULL。
下面的视图显示每季度销售额。当在 Date 分区中计算 LOOKUP (SUM(Sales), 2) 时,每行都会显示接下来 2 个季度的销售额值。
语法:LOOKUP(表达式,[偏移量])
示例:LOOKUP(SUM([销售额]), FIRST()+2) along [维度]
,计算分区第三行中的 SUM(销售额)。
LOOKUPDATE
返回目标行(指定为与当前行的日期偏移若干时间单位后的日期行)中表达式的值。
语法:LOOKUPDATE(表达式, 日期表达式, 偏移量, 偏移单位) along [维度表达式]
示例:LOOKUPDATE(SUM([销售额]), [日期], -7, "DAY") along [维度]
,表示在分区中寻找当前行的日期减去7天后的日期行,返回该行的 SUM(销售额)。
RUNNING_AVG
返回给定表达式从分区中第一行到当前行的运行平均值。下面的视图显示每季度销售额。当在 Date 分区中计算 RUNNING_AVG(SUM([Sales]) 时,结果为每个季度的销售额值的运行平均值。
语法:RUNNING_AVG(表达式) along [维度]
示例:RUNNING_AVG(SUM([Profit]))
计算 SUM(Profit) 的运行平均值。
RUNNING_COUNT
返回给定表达式从分区中第一行到当前行的运行计数。
语法:RUNNING_COUNT(表达式) along [维度]
示例:RUNNING_COUNT(SUM([Profit]))
计算 SUM(Profit) 的运行计数。
RUNNING_MAX
返回给定表达式从分区中第一行到当前行的运行最大值。
语法:RUNNING_MAX(表达式) along [维度]
示例:RUNNING_MAX(SUM([Profit])) along [Date],[Quarter]
计算 SUM(Profit) 的运行最大值。
RUNNING_MIN
返回给定表达式从分区中第一行到当前行的运行最小值。
语法:RUNNING_MIN(表达式) along [维度]
示例:RUNNING_MIN(SUM([Profit])) along [Date],[Quarter]
计算 SUM(Profit) 的运行最小值。
RUNNING_SUM
返回给定表达式从分区中第一行到当前行的运行总计。
语法:RUNNING_SUM(表达式) along [维度]
示例:RUNNING_SUM(SUM([Profit])) along [Date],[Quarter]
计算 SUM(Profit) 的运行总计。
WINDOW_AVG
返回给定表达式从分区中第一行到当前行的运行平均值。
语法:WINDOW_AVG(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_AVG(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 平均值。
WINDOW_COUNT
返回窗口中表达式的计数。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
语法:WINDOW_COUNT(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_COUNT(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 计数。
WINDOW_MAX
返回窗口中表达式的最大值。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
例如,下面的视图显示每季度销售额。Date 分区中的窗口最大值返回所有日期间的最大销售额。
语法:WINDOW_MAX(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_MAX(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 最大值。
WINDOW_MIN
返回窗口中表达式的最小值。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
例如,下面的视图显示每季度销售额。Date 分区中的窗口最小值返回所有日期间的最小销售额。
语法:WINDOW_MIN(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_MIN(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 最小值。
WINDOW_SUM
返回窗口中表达式的总计。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
例如,下面的视图显示每季度销售额。Date 分区中计算的窗口总计返回所有季度的销售额总计。
语法:WINDOW_SUM(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_SUM(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 求和。
WINDOW_VAR
返回窗口中表达式的样本方差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
语法:WINDOW_VAR(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_VAR(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 方差。
WINDOW_VARP
返回窗口中表达式的样本方差。窗口用与当前行的偏移定义。使用 返回窗口中表达式的有偏差方差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
语法:WINDOW_VARP(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_VARP(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 方差。
WINDOW_STDEV
返回窗口中表达式的样本标准差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
语法:WINDOW_STDEV(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_STDEV(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 标准差。
WINDOW_STDEVP
返回窗口中表达式的样本标准差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。
语法:WINDOW_STDEVP(表达式, [开始位置, 结束位置]) along [维度]
示例:WINDOW_STDEVP(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter]
计算从第二行到当前行的 SUM(Profit) 标准差。
RANK
返回分区中当前行的唯一排名。为相同的值分配相同的排名,允许并列。使用可选的 “asc” 或者”desc” 参数指定升序或降序顺序。默认为降序。
语法:RANK(表达式, ["asc"|"desc"]) along [维度表达式]
示例:RANK(sum([销售额]), "desc") along [部门]
利用此函数,可以按照部门的销售额求和进行降序排名,其中的排名有并列且会跳过并列名次,若销售额分别为(6, 7, 7, 9) 则排名结果为(4, 2, 2, 1)。
RANK_UNIQUE
返回分区中当前行的唯一排名。为相同的值分配不同的排名。使用可选的 “asc” | “desc” 参数指定升序或降序顺序。默认为降序。
语法:RANK_UNIQUE(表达式, ["asc"|"desc"]) along [维度表达式]
示例:RANK_UNIQUE(sum([销售额]), "desc") along [部门]
利用此函数,可以按照部门的销售额求和进行降序排名,且排名不会并列,若销售额分别为(6, 7, 7, 9) 则排名结果为(4, 2, 3, 1)。
RANK_MODIFIED
返回分区中当前行的调整后竞争排名。为相同的值分配相同的排名。使用可选的 ‘asc’ | ‘desc’ 参数指定升序或降序顺序。默认为降序。
语法:RANK_MODIFIED(表达式, ['asc'|'desc']) along [维度]
示例:利用此函数,将对值集 (6, 7, 7, 9) 进行排名 (4, 3, 3, 1)。
RANK_DENSE
返回分区中当前行的排名。为相同的值分配相同的排名,允许并列,但不会跳过并列名次。使用可选的 “asc” 或者 “desc” 参数指定升序或降序顺序。默认为降序
语法:RANK_DENSE(表达式, ["asc"|"desc"]) along [维度表达式]
示例:RANK_DENSE(sum([销售额]), "desc") along [部门]
利用此函数,可以按照部门的销售额求和进行降序排名,其中的排名有并列但不会跳过名次,若销售额分别为(6, 7, 7, 9) 则排名结果为(3, 2, 2, 1)。