Estruturação de janela

O quadro da janela ou agrupamento de agregação da janela define o limite dentro da partição de janela para a qual algum cálculo está sendo feito.

<window frame clause> ::= <window frame units>
<window frame extent> [ <window frame exclusion> ]
<window frame units> ::= ROWS | RANGE
<window frame extent> ::=
   <window frame start> | <window frame between>
<window frame start> ::=
   unbounded preceding | <unsigned value specification> preceding | current row
<window frame between> ::=
   between <window frame bound 1> and <window frame bound 2>
<window frame bound 1> ::= <window frame bound>
<window frame bound 2> ::= <window frame bound>
<window frame bound> ::=
<window frame start>
   | unbounded following
   | <unsigned value specification> following
<window frame exclusion> ::=
   exclude current row
   | exclude group
   | exclude ties
   | exclude no others
É possível especificar um quadro como baseado em linha ou baseado em intervalo:
  • Use linhas para as linhas físicas

    Apenas se os dados de entrada forem densos; ou seja, não há diferenças na sequência de valores de coluna de ordenação, mas não muito densos, como tendo múltiplas linhas para um mês. Nesse caso, é possível ter um empate, o que pode resultar em resultados não determinísticas. É possível ter mais de uma coluna de ordenação, e você não fica limitado a uma fórmula simples para calcular os valores de coluna de ordenação anterior e posterior.

  • Use intervalo de linhas lógicas

    Somente quando houver uma fórmula simples que possa ser usada para incluir ou subtrair um valor da coluna de ordenação. A coluna de ordem deve ser um tipo de dado numérico, data/hora ou intervalo, pois esses tipos de dados são os únicos tipos para os quais adição e subtração são definidas. Embora não seja possível usar mais de uma coluna de ordenação, suas consultas não são limitadas a dados densos e os empates não levam a não determinismo.

É possível especificar quadros limitados ou ilimitados:
Quadros limitados
O limite de quadro é determinado por um número específico ou linhas ou por um intervalo de valores.
Quadros sem limites
O quadro se estende até o limite da partição na direção, ou seja, ele pode ser sem limites precedendo a linha atual, sem limites seguindo a linha atual ou ambos.

Se você não especificar estruturação de janela e ordenação de janela, o efeito será como se você tivesse especificado entre sem limites precedendo ou sem limites seguindo.

Se você não especificar uma estruturação de janela, mas especificar uma ordenação de janela, a estruturação de janela implícita será o intervalo sem limites precedente.