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 |