Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » OLAP 支持 » 窗口函数 » 基本集合函数

 

SUM 函数示例

以下示例显示充当窗口函数的 SUM 函数。查询将返回按 DepartmentID 划分数据的结果集,然后提供员工薪水的累计总和 (Sum_Salary)(从在公司时间最长的员工开始)。结果集只包括居住在 California、Utah、New York 或 Arizona 的那些雇员。Sum_Salary 列提供雇员薪水的累计总额。

SELECT DepartmentID, Surname, StartDate, Salary,
SUM( Salary ) OVER ( PARTITION BY DepartmentID
    ORDER BY StartDate
    RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 
AS "Sum_Salary"
FROM Employees
WHERE State IN ( 'CA', 'UT', 'NY', 'AZ' ) 
   AND DepartmentID IN ( '100', '200' )
ORDER BY DepartmentID, StartDate;

下表是查询的结果集。结果集按 DepartmentID 划分。

DepartmentID Surname StartDate Salary Sum_Salary
1 100 Whitney 1984-08-28 45700.00 45700.00
2 100 Cobb 1985-01-01 62000.00 107700.00
3 100 Shishov 1986-06-07 72995.00 180695.00
4 100 Driscoll 1986-07-01 48023.69 228718.69
5 100 Guevara 1986-10-14 42998.00 271716.69
6 100 Wang 1988-09-29 68400.00 340116.69
7 100 Soo 1990-07-31 39075.00 379191.69
8 100 Diaz 1990-08-19 54900.00 434091.69
9 200 Overbey 1987-02-19 39300.00 39300.00
10 200 Martel 1989-10-16 55700.00 95000.00
11 200 Savarino 1989-11-07 72300.00 167300.00
12 200 Clark 1990-07-21 45000.00 212300.00
13 200 Goggin 1990-08-05 37900.00 250200.00

对于 DepartmentID 100 而言,来自 California、Utah、New York 和 Arizona 的雇员的薪水累计总额为 $434,091.69,而 DepartmentID 200 的雇员的薪水累计总额是 $250,200.00。

 计算相邻行间的增量
 复杂情况分析
 使用秩函数重新编写
 另请参见