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_clause Description
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW Letzte Zeile im Fenster ändert sich, wenn sich die aktuelle Zeile ändert (Standardeinstellung)
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING Die erste Zeile im Fenster ändert sich, wenn sich die aktuelle Zeile ändert
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING Alle 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_ID FIRST_NAME LAST_NAME SALARY DEPARTMENT_ID
100 Anita Borg 2500 10
200 Alfred Aho 3200 10
300 Bill Gates 2100 10
400 Linus Torvalds 3700 20
500 Michael Dell 3100 20
600 Nello Cristianini 2950 20
700 Rasmus Lerdorf 4900 20
800 Steve Jobs 2600 30
900 Thomas Kyte 5000 30

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_ID HIGHEST
10 3200
20 4900

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_ID LOWEST
10 2100
20 2950

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