Teradata OLAP函数

2018-01-12 16:00 更新

OLAP函数类似于聚合函数,除了聚合函数只返回一个值,而OLAP函数将提供聚合以外的各行。

语法

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

<aggregate function> OVER  
([PARTITION BY] [ORDER BY columnname][ROWS BETWEEN 
UNBOUDED PRECEDING AND UNBOUNDED FOLLWOING) 

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

例子

考虑以下薪资表。

员工不扣除NetPay
10140,0004,00036,000
10280,0006,00074,000
10390,0007,00083,000
10475,0005,00070,000

以下是查找工资表上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函数的通用语法。

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

例子

考虑以下Employee表。

员工不名字JoinedDateDepartmentID生日
101MikeJames3/27/200511/5/1980
102RobertWilliams4/25/200723/5/1983
103PeterPaul3/21/200724/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 
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号