Teradata OLAP函數(shù)

2018-01-12 16:00 更新

OLAP函數(shù)類似于聚合函數(shù),除了聚合函數(shù)只返回一個(gè)值,而OLAP函數(shù)將提供聚合以外的各行。

語法

以下是OLAP函數(shù)的一般語法。

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

聚合函數(shù)可以是SUM,COUNT,MAX,MIN,AVG。

例子

考慮以下薪資表。

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

以下是查找工資表上NetPay的累計(jì)金額或運(yùn)行總計(jì)的示例。 記錄按EmployeeNo排序,累積和計(jì)算在NetPay列上。

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

當(dāng)執(zhí)行上述查詢時(shí),它將產(chǎn)生以下輸出。

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

RANK

RANK功能根據(jù)提供的列對(duì)記錄進(jìn)行排序。 RANK函數(shù)還可以根據(jù)排名過濾返回的記錄數(shù)。

例子

以下是使用RANK函數(shù)的通用語法。

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

以下查詢通過加入日期對(duì)雇員表的記錄進(jìn)行排序,并在“加入日期”中分配排名。

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

當(dāng)執(zhí)行上述查詢時(shí),它將產(chǎn)生以下輸出。

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子句中定義的列對(duì)數(shù)據(jù)進(jìn)行分組,并在每個(gè)組中執(zhí)行OLAP功能。 以下是使用PARTITION BY子句的查詢的示例。

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

當(dāng)執(zhí)行上述查詢時(shí),它將產(chǎn)生以下輸出。 您可以看到每個(gè)部門都重置了排名。

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 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)