ウィンドウの最初のローの値を返します。
FIRST_VALUE( [ ALL ] 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 定義を参照してください。WINDOW 句を参照してください。
SELECT 文での Window 関数の使用方法や実例については、Window 関数を参照してください。
OVER 句でのウィンドウ指定の詳細については、ウィンドウ定義:OVER 句と WINDOW 句を使用したインライン定義を参照してください。
SQL/2008 ベンダー拡張。
SQL Anywhere では、SQL/2008 言語機能 F441、「Extended set function support」がサポートされています。これにより、カラム参照ではない任意の式を Window 関数のオペランドで使用できます。
SQL Anywhere では、オプションの SQL/2008 機能 F442、「Mixed column references in set function」がサポートされていません。SQL Anywhere では、FIRST_VALUE 関数を含むクエリブロックからのカラム参照と外部参照の両方を、集合関数の引数に含めることはできません。例については、AVG 関数 [集合]を参照してください。
次の例は、各従業員の給料と、同じ部署内で最近採用された従業員の給料との関係を、パーセンテージで返します。
SELECT DepartmentID, EmployeeID, 100 * Salary / ( FIRST_VALUE( Salary ) OVER ( PARTITION BY DepartmentID ORDER BY StartDate DESC ) ) AS percentage FROM GROUPO.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 になります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |