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

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (E-O)

 

FIRST_VALUE 函数 [Aggregate]

从窗口第一行返回值。

语法
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%。