从窗口第一行返回值。
FIRST_VALUE( expression [ { RESPECT | IGNORE } NULLS ] ) OVER ( window-spec )
window-spec:请参见下面的“注释”部分
expression 要计算的表达式。例如,列名。
参数的数据类型。
FIRST_VALUE 函数使您不用自连接就能(依照某种排序)选择表中的第一个值。如果您希望使用第一个值作为计算的基准,此函数很有价值。
FIRST_VALUE 函数从窗口提取第一个记录。然后针对第一个记录计算 expression 并返回结果。
如果指定 IGNORE NULL,则返回 expression 的第一个非 NULL 值。如果指定 RESPECT NULLS(缺省值),则会返回第一个值,无论其是否为 NULL。
FIRST_VALUE 函数与其它大多数集合函数的不同之处在于:该函数只能与窗口说明一起使用。
可以在函数语法中指定 window-spec 的元素(内置),也可以将这些元素与 SELECT 语句中的 WINDOW 子句一并加以指定。请参见WINDOW 子句中提供的 window-spec 定义。
有关在 SELECT 语句中使用窗口函数的详细信息(包括工作示例),请参见窗口函数。
SQL/2003 服务商扩充。
以下示例返回每个雇员的工资和同一部门中最近雇用的雇员的工资之间的关系,以百分比表示:
SELECT DepartmentID, EmployeeID, 100 * Salary / ( FIRST_VALUE( Salary ) OVER ( PARTITION BY DepartmentID ORDER BY StartDate DESC ) ) AS percentage FROM Employees; |
DepartmentID | EmployeeID | percentage |
---|---|---|
500 | 1658 | 100 |
500 | 1615 | 110.4284624 |
500 | 1570 | 138.8427097 |
500 | 1013 | 109.5851905 |
500 | 921 | 167.4497049 |
500 | 868 | 113.2393688 |
500 | 750 | 137.7344095 |
500 | 703 | 222.8679276 |
500 | 191 | 119.6642975 |
400 | 1751 | 100 |
400 | 1740 | 99.705647 |
400 | 1684 | 130.969936 |
400 | 1643 | 83.9734797 |
400 | 1607 | 175.1828989 |
400 | 1576 | 197.0164609 |
... | ... | ... |
雇员 1658 是部门 500 的第一行,表示他们是该部门中最近雇用的雇员,且其百分比为 100%。相对于雇员 1658 的百分比计算部门 500 中其余雇员的百分比。例如,雇员 1570 的收入大约是雇员 1658 的收入的 139%。
如果同一部门中其他雇员的工资与最近雇用的雇员的工资相同,则他们的百分比也是 100%。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |