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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (E-O)

 

FIRST_VALUE-Funktion [Aggregat]

Liefert Werte aus der ersten Zeile eines Fensters.

Syntax
FIRST_VALUE( Ausdruck [ { RESPECT | IGNORE } NULLS ] )
OVER ( Fensterspezifikation )
Fensterspezifikation: Weitere Hinweise finden Sie im folgenden Abschnitt "Bemerkungen".
Parameter
  • Ausdruck   Der auszuwertende Ausdruck. Z.B. ein Spaltenname.

Rückgabe

Datentyp des Arguments.

Bemerkungen

Mit der FIRST_VALUE-Funktion können Sie den ersten Wert (entsprechend der Sortierung) in einer Tabelle auswählen, ohne einen Selbst-Join verwenden zu müssen. Dies ist nützlich, wenn Sie den ersten Wert als Basiswert in Berechnungen verwenden wollen.

Die FIRST_VALUE-Funktion nimmt den ersten Datensatz im Fenster. Anschließend wird der Ausdruck anhand des ersten Datensatzes berechnet und Ergebnisse werden zurückgegeben.

Wenn IGNORE NULLS angegeben ist, wird der erste Nicht-NULL-Wert von Ausdruck zurückgegeben. Wenn RESPECT NULLS angegeben ist (Standardwert), wird der erste Wert zurückgegeben, unabhängig davon, ob er NULL ist.

Die FIRST_VALUE-Funktion unterscheidet sich von den meisten anderen Aggregatfunktionen, weil sie nur mit einer Fensterspezifikation verwendet werden kann.

Elemente von Fensterspezifikation können in der Funktionssyntax (Inline) oder zusammen mit einer WINDOW-Klausel in der SELECT-Anweisung angegeben werden. Weitere Hinweise finden Sie unter der Fensterspezifikation-Definition unter WINDOW-Klausel.

Weitere Hinweise zur Verwendung von Fensterfunktionen in SELECT-Anweisungen mit Arbeitsbeispielen finden Sie unter Fensterfunktionen.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Das folgende Beispiel gibt die Beziehung (als Prozentsatz) zwischen dem Gehalt aller Mitarbeiter und dem Gehalt des zuletzt eingestellten Mitarbeiters in der Abteilung zurück:

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
... ... ...

Mitarbeiter 1658 ist die erste Zeile für Department 500, womit angezeigt wird, dass es sich dabei um den jüngsten Neuzugang in der Abteilung handelt. Der Prozentsatz ist 100%. Die Prozentsätze für die restlichen Department-500-Mitarbeiter werden relativ zu Mitarbeiter 1658 berechnet. Mitarbeiter 1570 verdient beispielsweise 139% des Gehalts von 1658.

Wenn andere Mitarbeiter in derselben Abteilung gleich viel verdienen wie der zuletzt eingestellte Mitarbeiter, haben sie ebenfalls den Prozentsatz 100%.