Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Fensterfunktionen
Fensterfunktionen führen Berechnungen für mehrere Zeilen des Abfrageergebnisses durch. Sie werden nach der HAVING-Klausel, aber vor der ORDER BY-Klausel ausgeführt. Das Aufrufen einer Fensterfunktion erfordert eine spezielle Syntax, bei der das Fenster mit der OVER-Klausel angegeben wird. Ein Fenster besteht aus drei Komponenten:
-
Die Partitionsspezifikation, die die Eingabezeilen in verschiedene Partitionen unterteilt. Dies entspricht der Art und Weise, wie die GROUP BY-Klausel Zeilen für Aggregatfunktionen in verschiedene Gruppen unterteilt.
-
Die Sortierspezifikation, die die Reihenfolge bestimmt, in der Eingabezeilen von der Fensterfunktion verarbeitet werden.
-
Der Fensterrahmen, der ein verschiebbares Fenster mit Zeilen angibt, die von der Funktion für eine bestimmte Zeile verarbeitet werden sollen. Wenn der Frame nicht angegeben ist, wird standardmäßig RANGE UNBOUNDED PRECEOING verwendet, was dem Wert RANGE BETWEEN UNBOUNDED PRECIOVERING AND CURRENT ROW entspricht. Dieser Frame enthält alle Zeilen vom Anfang der Partition bis zum letzten Peer der aktuellen Zeile.
Alle Aggregatfunktionen können als Fensterfunktionen verwendet werden, indem die OVER-Klausel hinzugefügt wird. Die Aggregatfunktion wird für jede Zeile über die Zeilen innerhalb des Fensterrahmens der aktuellen Zeile berechnet. Zusätzlich zu den Aggregatfunktionen LiveAnalytics unterstützt Timestream for die folgenden Rangfolge- und Wertfunktionen.
Funktion | Ausgabedatentyp | Beschreibung |
---|---|---|
cume_dist () |
bigint |
Gibt die kumulative Verteilung eines Werts in einer Gruppe von Werten zurück. Das Ergebnis ist die Anzahl der Zeilen, die der Zeile in der Fensterreihenfolge der Fensterpartition vorausgehen oder ihr gleichrangig sind, geteilt durch die Gesamtzahl der Zeilen in der Fensterpartition. Somit ergeben alle Gleichheitswerte in der Reihenfolge denselben Verteilungswert. |
dense_rank () |
bigint |
Gibt den Rang eines Wertes in einer Gruppe von Werten zurück. Dies ist mit rank () vergleichbar, mit dem Unterschied, dass Gleichheitswerte keine Lücken in der Sequenz erzeugen. |
antil (n) |
bigint |
Unterteilt die Zeilen für jede Fensterpartition in n Buckets im Bereich von 1 bis höchstens n. Die Bucket-Werte unterscheiden sich höchstens um 1. Wenn sich die Anzahl der Zeilen in der Partition nicht gleichmäßig in die Anzahl der Buckets aufteilt, werden die restlichen Werte einzeln pro Bucket verteilt, beginnend mit dem ersten Bucket. |
percent_rank () |
double |
Gibt die prozentuale Rangfolge eines Werts in einer Gruppe von Werten zurück. Das Ergebnis ist (r - 1)/(n - 1), wobei r der Rang () der Zeile und n die Gesamtzahl der Zeilen in der Fensterpartition ist. |
Rang () |
bigint |
Gibt den Rang eines Werts in einer Gruppe von Werten zurück. Der Rang ist eins plus der Anzahl der Zeilen vor der Zeile, die der Zeile nicht ebenbürtig sind. Somit führen Gleichheitswerte in der Reihenfolge zu Lücken in der Reihenfolge. Die Rangfolge wird für jede Fensterpartition durchgeführt. |
Zeilennummer () |
bigint |
Gibt eine eindeutige, sequentielle Zahl für jede Zeile zurück, beginnend mit eins, entsprechend der Reihenfolge der Zeilen innerhalb der Fensterpartition. |
erster_Wert (x) |
[dasselbe wie Eingabe] |
Gibt den ersten Wert des Fensters zurück. Diese Funktion ist auf den Fensterrahmen beschränkt. Die Funktion verwendet einen Ausdruck oder ein Ziel als Parameter. |
last_value (x) |
[dasselbe wie Eingabe] |
Gibt den letzten Wert des Fensters zurück. Diese Funktion ist auf den Fensterrahmen beschränkt. Die Funktion verwendet einen Ausdruck oder ein Ziel als Parameter. |
nth_value (x, Offset) |
[dasselbe wie Eingabe] |
Gibt den Wert am angegebenen Offset vom Anfang des Fensters zurück. Offsets beginnen bei 1. Der Offset kann ein beliebiger skalarer Ausdruck sein. Wenn der Offset Null oder größer als die Anzahl der Werte im Fenster ist, wird Null zurückgegeben. Es ist ein Fehler, wenn der Offset Null oder negativ ist. Die Funktion verwendet einen Ausdruck oder ein Ziel als ersten Parameter. |
lead (x [, offset [, default_value]]) |
[dasselbe wie Eingabe] |
Gibt den Wert an den versetzten Zeilen hinter der aktuellen Zeile im Fenster zurück. Offsets beginnen bei 0, was der aktuellen Zeile entspricht. Der Offset kann ein beliebiger skalarer Ausdruck sein. Der Standard-Offset ist 1. Wenn der Offset Null oder größer als das Fenster ist, wird der Standardwert zurückgegeben, oder wenn er nicht angegeben ist, wird Null zurückgegeben. Die Funktion verwendet einen Ausdruck oder ein Ziel als ersten Parameter. |
lag (x [, Offset [, Standardwert]]) |
[dasselbe wie Eingabe] |
Gibt den Wert zurück, der vor der aktuellen Zeile im Fenster liegt. Offsets beginnen bei 0, was der aktuellen Zeile entspricht. Der Offset kann ein beliebiger skalarer Ausdruck sein. Der Standard-Offset ist 1. Wenn der Offset Null oder größer als das Fenster ist, wird der Standardwert zurückgegeben, oder wenn er nicht angegeben ist, wird Null zurückgegeben. Die Funktion verwendet einen Ausdruck oder ein Ziel als ersten Parameter. |