DENSE_RANK
-Beispiele
select
id,
salary,
dense_rank() over (order by salary)
from employee
order by salary;
id salary dense_rank -- ------ ----------- 3 8.00 1 4 9.00 2 1 10.00 3 5 10.00 3 2 12.00 4
DENSE_RANK
-Beispieleselect
id,
salary,
dense_rank() over (order by salary)
from employee
order by salary;
id salary dense_rank -- ------ ----------- 3 8.00 1 4 9.00 2 1 10.00 3 5 10.00 3 2 12.00 4
NTILE()
DSQL, PSQL
BIGINT
NTILE ( number_of_tiles ) OVER <window_name_or_spec>
Argument | Beschreibung |
---|---|
number_of_tiles |
Anzahl der Kacheln (Gruppen).Beschränkt auf ein positives Ganzzahlliteral, einen benannten Parameter (PSQL) oder einen Positionsparameter (DSQL). |
NTILE
verteilt die Zeilen der aktuellen Fensterpartition in die angegebene Anzahl von Kacheln (Gruppen).
NTILE
-Beispieleselect
id,
salary,
rank() over (order by salary),
ntile(3) over (order by salary)
from employee
order by salary;
ID SALARY RANK NTILE == ====== ==== ===== 3 8.00 1 1 4 9.00 2 1 1 10.00 3 2 5 10.00 3 2 2 12.00 5 3
PERCENT_RANK()
DSQL, PSQL
DOUBLE PRECISION
PERCENT_RANK () OVER <window_name_or_spec>
Die Verteilungsfunktion 'PERCENT_RANK' berechnet den relativen Rang einer Zeile innerhalb einer Fensterpartition.PERCENT_RANK
wird berechnet als [fblangref40-windowfuncs-rank-de] minus 1 der aktuellen Zeile geteilt durch die Anzahl der Zeilen in der Partition minus 1.
Mit anderen Worten, PERCENT_RANK() OVER <window_name_or_spec>
entspricht (RANK() OVER <window_name_or_spec> - 1) / CAST(COUNT(*) OVER() - 1 AS DOUBLE PRECISION)
PERCENT_RANK
Examplesselect
id,
salary,
rank() over (order by salary),
percent_rank() over (order by salary)
from employee
order by salary;
id salary rank percent_rank -- ------ ---- ------------ 3 8.00 1 0 4 9.00 2 0.25 1 10.00 3 0.5 5 10.00 3 0.5 2 12.00 5 1
RANK()
DSQL, PSQL
BIGINT
RANK () OVER <window_name_or_spec>
Gibt den Rang jeder Zeile in einer Partition der Ergebnismenge zurück.Zeilen mit den gleichen Werten von window-order erhalten den gleichen Rang wie in der Partition _window-partition, falls angegeben.Der Rang einer Zeile entspricht der Anzahl der Rangwerte in der Partition vor der aktuellen Zeile plus eins.
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