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 関数 [集合]

ウィンドウの最初のローの値を返します。

構文
FIRST_VALUE( expression [ { RESPECT | IGNORE } NULLS ] )
OVER ( window-spec )
window-spec : 以下の備考を参照します。
パラメータ
  • expression   評価する式。たとえば、カラム名です。

戻り値

引数のデータ型。

備考

FIRST_VALUE 関数を使用すると、セルフジョインを使用せずに、(何らかの順序による) 最初の値を選択できます。最初の値を計算の基準として使用する場合、この関数が役立ちます。

FIRST_VALUE 関数は、ウィンドウの最初のレコードを取得します。次に、最初のレコードに対して expression が比較され、結果が返されます。

IGNORE NULLS を指定すると、expression にある最初の NULL 以外の値が返されます。RESPECT NULLS (デフォルト) を指定すると、最初の値が、それが NULL であってもなくても返されます。

FIRST_VALUE 関数は、その他の大部分の集合関数とは異なり、ウィンドウ指定を行った場合にのみ使用できます。

window-spec の要素は、関数構文の中 (インライン) に指定するか、または SELECT 文の WINDOW 句と組み合わせて指定できます。WINDOW 句window-spec 定義を参照してください。

SELECT 文での Window 関数の使用方法や実例については、Window 関数を参照してください。

参照
標準と互換性
  • 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 の最初のローに示されていることから、従業員 1658 がこの部署で最近採用された従業員であることがわかります。パーセンテージは 100% に設定されています。部署 500 の他の従業員のパーセンテージは、従業員 1658 との相対的な値として算出されます。たとえば、従業員 1570 は、従業員 1658 の給料の約 139% に相当する給料を受け取っています。

同じ部署内にいるその他の従業員が、最近採用された従業員と同じ額の給料を受け取っている場合は、その従業員のパーセンテージも 100 になります。