RANK
-Beispiele
select
id,
salary,
rank() over (order by salary)
from employee
order by salary;
id salary rank -- ------ ----- 3 8.00 1 4 9.00 2 1 10.00 3 5 10.00 3 2 12.00 5
RANK
-Beispieleselect
id,
salary,
rank() over (order by salary)
from employee
order by salary;
id salary rank -- ------ ----- 3 8.00 1 4 9.00 2 1 10.00 3 5 10.00 3 2 12.00 5
ROW_NUMBER()
DSQL, PSQL
BIGINT
ROW_NUMBER () OVER <window_name_or_spec>
Gibt die fortlaufende Zeilennummer in der Partition der Ergebnismenge zurück, wobei '1' die erste Zeile in jeder der Partitionen ist.
ROW_NUMBER
-Beispieleselect
id,
salary,
row_number() over (order by salary)
from employee
order by salary;
id salary rank -- ------ ----- 3 8.00 1 4 9.00 2 1 10.00 3 5 10.00 4 2 12.00 5
Die Navigationsfunktionen rufen den einfachen (nicht aggregierten) Wert eines Ausdrucks aus einer anderen Zeile der Abfrage innerhalb derselben Partition ab.
Important
|
Dies führt wahrscheinlich zu seltsamen oder unerwarteten Ergebnissen für "NTH_VALUE" und insbesondere "LAST_VALUE". |
select
id,
salary,
first_value(salary) over (order by salary),
last_value(salary) over (order by salary),
nth_value(salary, 2) over (order by salary),
lag(salary) over (order by salary),
lead(salary) over (order by salary)
from employee
order by salary;
id salary first_value last_value nth_value lag lead -- ------ ----------- ---------- --------- ------ ------ 3 8.00 8.00 8.00 <null> <null> 9.00 4 9.00 8.00 9.00 9.00 8.00 10.00 1 10.00 8.00 10.00 9.00 9.00 10.00 5 10.00 8.00 10.00 9.00 10.00 12.00 2 12.00 8.00 12.00 9.00 10.00 <null>
FIRST_VALUE()
DSQL, PSQL
Das gleiche wie type wie expr
FIRST_VALUE ( <expr> ) OVER <window_name_or_spec>
Argument | Beschreibung |
---|---|
expr |
Ausdruck.Kann eine Tabellenspalte, Konstante, Variable, Ausdruck, Skalarfunktion enthalten.Aggregatfunktionen sind als Ausdruck nicht zulässig. |
Gibt den ersten Wert der aktuellen Partition zurück.
LAG()
DSQL, PSQL
Das gleiche wie type wie expr
LAG ( <expr> [, <offset [, <default>]]) OVER <window_name_or_spec>
Argument | Beschreibung |
---|---|
expr |
Ausdruck.Kann eine Tabellenspalte, Konstante, Variable, Ausdruck, Skalarfunktion enthalten.Aggregatfunktionen sind als Ausdruck nicht zulässig. |
offset |
Der Offset in Zeilen vor der aktuellen Zeile, um den durch expr identifizierten Wert zu erhalten.Wenn offset nicht angegeben ist, ist der Standardwert |
default |
Der Standardwert, der zurückgegeben werden soll, wenn offset außerhalb der Partition zeigt.Der Standardwert ist |
Die LAG
-Funktion ermöglicht den Zugriff auf die Zeile in der aktuellen Partition mit einem gegebenen Offset vor der aktuellen Zeile.
Wenn offset außerhalb der aktuellen Partition zeigt, wird default zurückgegeben, oder NULL
, wenn kein Standard angegeben wurde.
LAG
-BeispieleAngenommen, Sie haben die Tabelle 'RATE', in der der Wechselkurs für jeden Tag gespeichert ist.Um die Änderung des Wechselkurses in den letzten fünf Tagen zu verfolgen, können Sie die folgende Abfrage verwenden.
select
bydate,
cost,
cost - lag(cost) over (order by bydate) as change,
100 * (cost - lag(cost) over (order by bydate)) /
lag(cost) over (order by bydate) as percent_change
from rate
where bydate between dateadd(-4 day to current_date)
and current_date
order by bydate
bydate cost change percent_change ---------- ------ ------ -------------- 27.10.2014 31.00 <null> <null> 28.10.2014 31.53 0.53 1.7096 29.10.2014 31.40 -0.13 -0.4123 30.10.2014 31.67 0.27 0.8598 31.10.2014 32.00 0.33 1.0419
LAST_VALUE()
DSQL, PSQL
Das gleiche wie type wie expr
LAST_VALUE ( <expr> ) OVER <window_name_or_spec>
Argument | Beschreibung |
---|---|
expr |
Ausdruck.Kann eine Tabellenspalte, Konstante, Variable, Ausdruck, Skalarfunktion enthalten.Aggregatfunktionen sind als Ausdruck nicht zulässig. |
Gibt den letzten Wert der aktuellen Partition zurück.
Siehe auch Hinweis zu Frames für Navigationsfunktionen.
LEAD()
DSQL, PSQL
Das gleiche wie type wie expr
LEAD ( <expr> [, <offset [, <default>]]) OVER <window_name_or_spec>
Argument | Beschreibung |
---|---|
expr |
Ausdruck.Kann eine Tabellenspalte, Konstante, Variable, Ausdruck, Skalarfunktion enthalten.Aggregatfunktionen sind als Ausdruck nicht zulässig. |
offset |
Der Offset in Zeilen nach der aktuellen Zeile, um den durch expr identifizierten Wert zu erhalten.Wenn offset nicht angegeben ist, ist der Standardwert |
default |
Der Standardwert, der zurückgegeben werden soll, wenn offset außerhalb der Partition zeigt.Der Standardwert ist |
Die LEAD
-Funktion ermöglicht den Zugriff auf die Zeile in der aktuellen Partition mit einem gegebenen Offset nach der aktuellen Zeile.
Wenn offset außerhalb der aktuellen Partition zeigt, wird default zurückgegeben, oder NULL
, wenn kein Standard angegeben wurde.
NTH_VALUE()
DSQL, PSQL
Das gleiche wie type wie expr
NTH_VALUE ( <expr>, <offset> ) [FROM {FIRST | LAST}] OVER <window_name_or_spec>
Argument | Beschreibung |
---|---|
expr |
Ausdruck.Kann eine Tabellenspalte, Konstante, Variable, Ausdruck, Skalarfunktion enthalten.Aggregatfunktionen sind als Ausdruck nicht zulässig. |
offset |
Der Versatz in Zeilen vom Anfang ( |
Die Funktion NTH_VALUE
gibt den Nten Wert ab der ersten (FROM FIRST
) oder der letzten (FROM LAST
) Zeile des aktuellen Frames zurück, siehe auch note on Rahmen für Navigationsfunktionen.Offset 1
mit FROM FIRST
entspricht FIRST_VALUE
und Offset 1
mit FROM LAST
entspricht LAST_VALUE
.
Es ist möglich, Aggregatfunktionen (aber keine Window-Funktionen) innerhalb der OVER
-Klausel zu verwenden.In diesem Fall wird zuerst die Aggregatfunktion angewendet, um die Windows zu bestimmen, und erst dann werden die Window-Funktionen auf diese Window- angewendet.
Note
|
Bei Verwendung von Aggregatfunktionen innerhalb von |
select
code_employee_group,
avg(salary) as avg_salary,
rank() over (order by avg(salary)) as salary_rank
from employee
group by code_employee_group