- Catégories :
Fonctions de fenêtre (Général)
CONDITIONAL_CHANGE_EVENT¶
Renvoie un numéro d’événement de fenêtre pour chaque ligne d’une partition de fenêtre lorsque la valeur de l’argument expr1 de la ligne en cours est différente de la valeur de expr1 de la ligne précédente. Le numéro d’événement de la fenêtre commence à partir de 0 et est incrémenté de 1 pour indiquer le nombre de modifications déjà effectuées dans cette fenêtre.
Syntaxe¶
Arguments¶
expr1Cette expression est comparée à celle de la ligne précédente.
expr2C’est l’expression facultative à partir de laquelle effectuer la partition.
expr3C’est l’expression à partir de laquelle effectuer le classement dans chaque partition.
Notes sur l’utilisation¶
L’expression
CONDITIONAL_CHANGE_EVENT (expr1) OVER (window_frame)est calculée comme suit :CONDITIONAL_TRUE_EVENT( <expr1> != LAG(<expr1>) OVER(window_frame)) OVER(window_frame)Pour plus d’informations sur les CONDITIONAL_TRUE_EVENT, voir CONDITIONAL_TRUE_EVENT.
Exemples¶
Cela montre comment détecter le nombre de fois où l’alimentation est tombée en panne et a été remise sous tension (c’est-à-dire le nombre de fois où la tension est tombée à 0 ou a été restaurée). (Cet exemple suppose que l’échantillonnage de la tension toutes les 15 minutes est suffisant. Étant donné que les pannes de courant peuvent durer moins de 15 minutes, vous voudriez généralement des échantillons plus fréquents ou vous voudriez traiter les résultats de la requête comme une approximation.)
Créer et charger la table :
Cela montre les échantillons pour lesquels la tension était nulle, que ces événements de zéro volt fassent partie de la même panne de courant ou de différentes pannes de courant.
Ceci montre les échantillons, ainsi qu’une colonne indiquant si la tension a changé :
Ceci montre les moments où l’alimentation s’est arrêtée et a redémarré :
Ceci montre combien de fois l’alimentation s’est arrêtée et a redémarré :
Cet exemple illustre que :
Le numéro de modification dans une partition change chaque fois que la valeur spécifiée change.
Les valeurs NULL ne sont pas considérées comme des valeurs nouvelles ou modifiées.
Le nombre de modifications est réinitialisé à 0 pour chaque partition.
Créer et charger la table :
Interrogez la table :
L’exemple suivant montre que :
expr1peut être une expression autre qu’une colonne. Cette requête utilise l’expressiono_col < 15. La sortie de la requête indique que la valeur de o_col passe d’une valeur inférieure à 15 à une valeur supérieure ou égale à 15.expr3ne doit pas nécessairement correspondre àexpr1. En d’autres termes, l’expression de la sous-clause ORDER BY de la clause OVER ne doit pas nécessairement correspondre à l’expression de la fonction CONDITIONAL_CHANGE_EVENT.
L’exemple suivant compare CONDITIONAL_CHANGE_EVENT et CONDITIONAL_TRUE_EVENT :
Cet exemple compare également CONDITIONAL_CHANGE_EVENT et CONDITIONAL_TRUE_EVENT :
Voici un exemple plus détaillé :