- Kategorien:
Fensterfunktionen (Allgemein)
CONDITIONAL_TRUE_EVENT¶
Gibt eine Fensterereignisnummer für jede Zeile einer Fensterpartition basierend auf dem Ergebnis des booleschen Arguments expr1 zurück. Die Zahl beginnt bei 0 und wird für jede Zeile, für die der Ausdruck expr1 den Wert „true“ ergibt, um 1 erhöht.
Eine Verwendung dieser Funktion ist das Bilden von Sitzungen für Fensterpartitionen (Sessionisieren). Beispielsweise kann in Click-Stream-Daten ermittelt werden, ob ein Benutzer eine neue Sitzung gestartet hat, indem überprüft wird, ob das letzte Ereignis länger als ein Schwellenwert zurückliegt.
Syntax¶
Argumente¶
expr1Dies ist ein boolescher Ausdruck, der den Wert der Fensterereignisnummer ändert, wenn er „true“ ergibt.
expr2Dies ist der optionale Ausdruck, nach dem partitioniert werden soll.
expr3Dies ist der Ausdruck, nach dem in jeder Partition sortiert werden soll.
Nutzungshinweise¶
Der bedingte Ausdruck
expr1kann die rangbezogenen Funktionen LAG und LEAD enthalten, mit denen sich aussagekräftige Fenster erstellen lassen. Falls verwendet müssen diese Funktionen dieselbe OVER-Spezifikation wie CONDITIONAL_TRUE_EVENT verwenden.
Beispiele¶
Das erste Beispiel zeigt Folgendes:
Der Zähler innerhalb einer Partition erhöht sich jedes Mal, wenn die angegebene Spalte TRUE ist (in diesem Fall ungleich Null).
NULL-Werte werden nicht als TRUE-Wert betrachtet.
Der Zähler beginnt bei 0 für jede Partition von vorne.
Erstellen und laden Sie die Tabelle:
Fragen Sie die Tabelle ab:
Das nächste Beispiel zeigt Folgendes:
expr1kann ein anderer Ausdruck als eine Spalte sein. Diese Abfrage verwendet den Ausdrucko_col > 20. Die Ausgabe der Abfrage zeigt an, wann sich der Wert in „o_col“ von einem Wert kleiner oder gleich 20 in einen Wert größer 20 ändert.expr3muss nicht mitexpr1übereinstimmen. Mit anderen Worten, der Ausdruck in der ORDER BY-Unterklausel der OVER-Klausel muss nicht mit dem Ausdruck in der Funktion CONDITIONAL_TRUE_EVENT übereinstimmen.
Im nächsten Beispiel wird CONDITIONAL_CHANGE_EVENT mit CONDITIONAL_TRUE_EVENT verglichen:
In diesem Beispiel werden auch CONDITIONAL_CHANGE_EVENT und CONDITIONAL_TRUE_EVENT verglichen:
Hier ist ein ausführlicheres Beispiel: