- Categorias:
Funções de janela (General)
CONDITIONAL_CHANGE_EVENT¶
Retorna um número de evento de janela para cada linha dentro de uma partição de janela quando o valor do argumento expr1 na linha atual é diferente do valor expr1 na linha anterior. O número do evento da janela começa a partir de 0 e é incrementado por 1 para indicar o número de mudanças até agora dentro daquela janela.
Sintaxe¶
Argumentos¶
expr1Esta é uma expressão que se compara com a expressão da linha anterior.
expr2Esta é a expressão opcional para divisão.
expr3Esta é a expressão a ordenar dentro de cada partição.
Notas de uso¶
A expressão
CONDITIONAL_CHANGE_EVENT (expr1) OVER (window_frame)é calculada como:CONDITIONAL_TRUE_EVENT( <expr1> != LAG(<expr1>) OVER(window_frame)) OVER(window_frame)Para obter mais informações sobre CONDITIONAL_TRUE_EVENT, consulte CONDITIONAL_TRUE_EVENT.
Exemplos¶
Isto mostra como detectar o número de vezes que a energia falhou e foi ligada novamente (ou seja, o número de vezes que a tensão caiu para 0 ou foi restaurada). (Este exemplo considera que a amostragem da tensão a cada 15 minutos é suficiente. Como as falhas de energia podem durar menos de 15 minutos, você normalmente desejaria amostras mais frequentes, ou trataria os resultados da consulta como uma aproximação).
Criar e carregar a tabela:
Isto mostra as amostras para as quais a voltagem era zero, se esses eventos de voltagem zero eram ou não parte da mesma falha de energia ou falhas de energia diferentes.
Isto mostra as amostras, juntamente com uma coluna indicando se a tensão mudou:
Isto mostra as horas em que a energia parou e reiniciou:
Isto mostra quantas vezes a energia parou e reiniciou:
Este exemplo ilustra isso:
O número de mudança dentro de uma partição muda cada vez que o valor especificado muda.
Valores NULL não são considerados valores novos ou alterados.
A contagem das mudanças começa novamente em 0 para cada partição.
Criar e carregar a tabela:
Consultar a tabela:
O próximo exemplo mostra isso:
expr1pode ser uma expressão que não seja uma coluna. Esta consulta usa a expressãoo_col < 15, e a saída da consulta mostra quando o valor em o_col muda de um valor menor que 15 para um valor maior ou igual a 15.expr3não precisa ser compatível comexpr1. Em outras palavras, a expressão na subcláusula ORDER BY da cláusula OVER não precisa corresponder à expressão na função CONDITIONAL_CHANGE_EVENT.
O próximo exemplo compara CONDITIONAL_CHANGE_EVENT e CONDITIONAL_TRUE_EVENT:
Este exemplo também compara CONDITIONAL_CHANGE_EVENT e CONDITIONAL_TRUE_EVENT:
Aqui está um exemplo mais extenso: