LAST_VALUE-Funktion Oracle/PLSQL

In diesem Oracle-Lernprogramm wird erläutert, wie Sie die Oracle/PLSQL LAST_VALUE-Funktion mit Syntax und Beispielen verwenden.

Beschreibung

Die Oracle/PLSQL-Funktion LAST_VALUE gibt den letzten Wert in einer geordneten Menge von Werten aus einem Analysefenster zurück. Sie ähnelt den Funktionen FIRST_VALUE und NTH_VALUE.

Syntax

Die ANSI-kompatible Syntax für die LAST_VALUE-Funktion in Oracle/PLSQL lautet:

FIRST_VALUE (expression)
[RESPECT NULLS | IGNORE NULLS]
OVER ([query_partition_clause] [order_by_clause [windowing_clause]])

Die folgende Syntax ist auch ein akzeptiertes Format:

FIRST_VALUE (expression [RESPECT NULLS | IGNORE NULLS])
OVER ([query_partition_clause] [order_by_clause [windowing_clause]])

Parameter oder Argumente

expression Die Spalte oder der Ausdruck, für den Sie den letzten Wert zurückgeben möchten.

RESPECT NULLS | IGNORE NULLS Wahlweise. Sie bestimmt, ob NULL-Werte in die Analysefensterberechnung einbezogen oder ignoriert werden. Wenn dieser Parameter nicht angegeben wird, ist der Standardwert RESPECT NULLS, der NULL-Werte enthält.

query_partition_clause Wahlweise. Es wird verwendet, um die Ergebnisse basierend auf einem oder mehreren Ausdrücken in Gruppen zu unterteilen.

order_by_clause Wahlweise. Es wird verwendet, um die Daten in jeder Partition zu ordnen.

windowing_clause Wahlweise. Es bestimmt die Zeilen im Analysefenster, die ausgewertet werden sollen, und es ist wichtig, dass Sie die richtige windowing_clause verwenden, da Sie sonst unerwartete Ergebnisse erhalten. Es kann ein Wert sein wie:

windowing_clauseDescription
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROWLetzte Zeile im Fenster ändert sich, wenn sich die aktuelle Zeile ändert (Standardeinstellung)
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWINGDie erste Zeile im Fenster ändert sich, wenn sich die aktuelle Zeile ändert
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWINGAlle Zeilen sind unabhängig von der aktuellen Zeile im Fenster enthalten

Notiz

  • Die LAST_VALUE-Funktion gibt den letzten Wert in einer geordneten Menge von Werten aus einem Analysefenster zurück.

Gilt für

Die LAST_VALUE-Funktion kann in den folgenden Versionen von Oracle/PLSQL verwendet werden:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Beispiel

Schauen wir uns einige Oracle-LAST_VALUE-Funktionsbeispiele an und untersuchen, wie Sie die LAST_VALUE-Funktion in Oracle/PLSQL verwenden.

Höchster Lohn für alle Mitarbeiter

Beginnen wir mit einem einfachen Beispiel und verwenden Sie die Funktion LAST_VALUE, um das höchste Gehalt in der Employee-Tabelle zurückzugeben. In diesem Beispiel benötigen wir keine query_partition_clause, da wir die gesamte Mitarbeitertabelle auswerten.

In diesem Beispiel haben wir eine Tabelle mit dem Namen employees mit den folgenden Daten:

EMPLOYEE_IDFIRST_NAMELAST_NAMESALARYDEPARTMENT_ID
100AnitaBorg250010
200AlfredAho320010
300BillGates210010
400LinusTorvalds370020
500MichaelDell310020
600NelloCristianini295020
700RasmusLerdorf490020
800SteveJobs260030
900ThomasKyte500030

Geben Sie die folgende SELECT-Anweisung ein, um das höchste Gehalt zu ermitteln:

Dies sind die Ergebnisse, die Sie sehen sollten:

HIGHEST
5000

In diesem Beispiel gibt der LAST_VALUE den höchsten Lohnwert zurück, wie von LAST_VALUE(salary) angegeben. Das Analysefenster sortiert die Daten nach Gehalt in aufsteigender Reihenfolge, wie in ORDER BY salary ASC angegeben. Die RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING windowing_clause wird verwendet, um sicherzustellen, dass alle Zeilen unabhängig von der aktuellen Zeile enthalten sind.

Und da wir das höchste Gehalt für die Tabelle haben möchten, mussten wir keine query_partition_clause hinzufügen, um die Daten zu partitionieren.

Höchster Gehalt von Dept_id

Nun zeigen wir Ihnen, wie Sie die LAST_VALUE-Funktion mit einer query_partition_clause verwenden. Lassen Sie uns im nächsten Beispiel das höchste Gehalt für dept_id 10 und 20 zurückgeben.

Geben Sie basierend auf derselben employee-Tabelle die folgende SQL-Anweisung ein:

Dies sind die Ergebnisse, die Sie sehen sollten:

DEPARTMENT_IDHIGHEST
103200
204900

In diesem Beispiel gibt der LAST_VALUE den höchsten Lohnwert zurück, wie von LAST_VALUE(salary) angegeben. Das Analysefenster unterteilt die Ergebnisse nach dept_id und ordnet die Daten nach Gehalt in aufsteigender Reihenfolge an, wie in PARTITION BY dept_id ORDER BY salary ASC angegeben.

Niedrigster Gehalt von Dept_id

Jetzt zeigen wir Ihnen, wie Sie mit der Funktion LAST_VALUE das niedrigste Gehalt für dept_id 10 und 20 zurückgeben.

Geben Sie erneut basierend auf den Daten in der Employee-Tabelle die folgende SQL-Anweisung ein:

Dies sind die Ergebnisse, die Sie sehen sollten:

DEPARTMENT_IDLOWEST
102100
202950

In diesem Beispiel haben wir die Sortierreihenfolge in der von PARTITION BY dept_id ORDER BY salary DESC spezifizierten Sortierung auf die Partition umgestellt.