开发手册 欢迎您!
软件开发者资料库

Teradata - OLAP功能

Teradata OLAP函数 - 从简单和简单的步骤学习Teradata,从基本到高级概念,包括简介,安装,体系结构,关系概念,数据类型,表,数据操作,SELECT语句,逻辑和条件运算符,SET运算符,字符串处理,日期/时间函数,内置函数,聚合函数,CASE和COALESCE,主索引,连接,子查询,表类型,空间概念,二级索引,统计,压缩,解释,哈希算法,JOIN索引,视图,宏,存储过程,JOIN策略,分区主索引,OLAP功能,数据保护,用户管理,性能调整,FastLoad,MultiLoad,FastExport,BTEQ。

OLAP函数类似于聚合函数,但聚合函数只返回一个值,而OLAP函数除了聚合外还提供各行.

语法

以下是OLAP函数的一般语法.

 OVER  ([PARTITION BY] [ORDER BY columnname][ROWS BETWEEN UNBOUDED PRECEDING AND UNBOUNDED FOLLOWING)

聚合函数可以是SUM,COUNT,MAX,MIN,AVG.

示例

考虑以下薪资表.

EmployeeNoGrossDeductionNetPay
10140,0004,00036,000
10280,0006,00074,000
10390,0007,00083,000
10475,0005,00070,000

以下是一个示例在Salary表中查找NetPay的累计总和或运行总计.记录按EmployeeNo排序,累计金额按NetPay列计算.

SELECT  EmployeeNo, NetPay, SUM(Netpay) OVER(ORDER BY EmployeeNo ROWS  UNBOUNDED PRECEDING) as TotalSalary FROM Salary;

执行上述查询时,会产生以下输出.

EmployeeNo     NetPay     TotalSalary -----------  -----------  -----------    101         36000        36000    102         74000        110000    103         83000        193000    104         70000        263000    105         18000        281000

RANK

RANK函数根据提供的列对记录进行排序. RANK函数还可以根据排名过滤返回的记录数.

语法

以下是使用RANK函数的通用语法./p>

RANK() OVER ([PARTITION BY columnnlist] [ORDER BY columnlist][DESC|ASC])

示例

考虑以下Employee表.

EmployeeNoFirstNameLastNameJoinedDateDepartmentIDBirthDate
101MikeJames3/27/200511/5/1980
102RobertWilliam s2007年4月25日23/5/1983
103彼得保罗2007年3月21日24/1/1983
104AlexStuart2/1/2008211/6/1984
105RobertJames1/4/2008312/1/1984

以下查询按加入日期订购员工表的记录,并在加入日期分配排名.

SELECT EmployeeNo, JoinedDate,RANK() OVER(ORDER BY JoinedDate) as Seniority FROM Employee;

执行上述查询时,会产生以下输出.

EmployeeNo   JoinedDate   Seniority -----------  ----------  -----------    101       2005-03-27       1    103       2007-03-21       2    102       2007-04-25       3    105       2008-01-04       4    104       2008-02-01       5

PARTITION BY子句按PARTITION BY子句中定义的列对数据进行分组,并在每个组中执行OLAP功能.以下是使用PARTITION BY子句的查询示例.

SELECT EmployeeNo, JoinedDate,RANK() OVER(PARTITION BY DeparmentNo ORDER BY JoinedDate) as Seniority FROM Employee;

执行上述查询时,会产生以下输出.您可以看到为每个部门重置等级.

  EmployeeNo DepartmentNo JoinedDate Seniority  --------- -  ------------ ---------- -----------  101 1 2005-03-27 1  103 2 2007-03-21 1  102 2 2007-04-25 2  104 2 2008-02-01 3  105 3 2008-01-04 1