Gemäß der SQL-Spezifikation sind Window-Funktionen (auch als analytische Funktionen bekannt) eine Art Aggregation, die jedoch nicht die Ergebnismenge einer Abfrage ""filtert".Die Zeilen mit aggregierten Daten werden mit dem Abfrageergebnissatz gemischt.
Die Window-Funktionen werden mit der OVER-Klausel verwendet.Sie dürfen nur in der SELECT-Liste oder der ORDER BY-Klausel einer Abfrage erscheinen.
Firebird-Fensterfunktionen können partitioniert und geordnet werden.
<window_function> ::=
<aggregate_function> OVER <window_name_or_spec>
| <window_function_name> ([<expr> [, <expr> ...]])
OVER <window_name_or_spec>
<aggregate_function> ::=
!! Siehe auch Aggregatfunktionen !!
<window_name_or_spec> ::=
<window_specification> | existing_window_name
<window_function_name> ::=
<ranking_function>
| <navigational_function>
<ranking_function> ::=
RANK | DENSE_RANK | PERCENT_RANK | ROW_NUMBER
| CUME_DIST | NTILE
<navigational_function>
LEAD | LAG | FIRST_VALUE | LAST_VALUE | NTH_VALUE
<window_specification> ::=
( [existing_window_name] [<window_partition>]
[<window_order>] [<window_frame>] )
<window_partition> ::=
[PARTITION BY <expr> [, <expr> ...]]
<window_order> ::=
[ORDER BY
<expr> [<direction>] [<nulls_placement>]
[, <expr> [<direction>] [<nulls_placement>] ...]
<direction> ::= {ASC | DESC}
<nulls_placement> ::= NULLS {FIRST | LAST}
<window_frame> ::= {RANGE | ROWS} <window_frame_extent>
<window_frame_extent> ::=
<window_frame_start> | <window_frame_between>
<window_frame_start> ::=
UNBOUNDED PRECEDING | <expr> PRECEDING | CURRENT ROW
<window_frame_between> ::=
BETWEEN <window_frame_bound_1> AND <window_frame_bound_2>
<window_frame_bound_1> ::=
UNBOUNDED PRECEDING | <expr> PRECEDING | CURRENT ROW
| <expr> FOLLOWING
<window_frame_bound_2> ::=
<expr> PRECEDING | CURRENT ROW | <expr> FOLLOWING
| UNBOUNDED FOLLOWING
| Argument | Beschreibung |
|---|---|
expr |
Ausdruck.Kann eine Tabellenspalte, Konstante, Variable, Ausdruck, Skalar- oder Aggregatfunktion enthalten.Window-Funktionen sind als Ausdruck nicht erlaubt. |
aggregate_function |
Eine Aggregatfunktion, die als Window-Funktion verwendet wird. |
existing_window_name |
Ein benanntes Fenster (Window), das mit |