Enmarcación de ventana

El marco de ventana o la agrupación de agregación de ventanas define el límite dentro de la partición de ventana para la que se realiza algún cálculo.

<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
Puede especificar un marco basado en fila o basado en rango:
  • Utilice filas para las filas físicas

    Solo si los datos de entrada son compactos; es decir, que no hay huecos en la secuencia de ordenación de valores de columna, pero no son demasiados compactos, como tener varias filas para un mes. En ese caso, puede tener un empate, que puede dar resultados no deterministas. Puede tener más de una columna de ordenación y no está limitado a una simple fórmula para calcular los valores de columna de ordenación ascendente y descendente.

  • Utilice el rango para las filas lógicas

    Solo cuando hay una fórmula simple que puede utilizar para añadir o restar un valor de una columna de ordenación. La columna de orden debe ser numérica, de fecha y hora o un tipo de datos de intervalo, porque esos tipos de datos son los únicos tipos para los que se define la adición o sustracción. Aunque no puede utilizar más de una columna de ordenación, las consultas no están limitadas a datos compactos y los empates no llevan al no-determinismo.

Puede especificar marcos limitados o ilimitados:
Marcos limitados
El límite de marco se determina por medio de filas o un número especificado o por un rango de valores.
Marcos ilimitados
El marco amplía el límite de partición en la dirección, es decir, puede ser ilimitado precediendo a la fila actual, ilimitado después de la fila actual o ambos.

Si no especifica el enmarcado de ventana o la ordenación de ventana, el efecto es como si especifica between unbounded preceding and unbounded following.

Si no especifica un enmarcado de ventana, pero especifica una ordenación de ventana, entonces el enmarcado de ventana implícito es range unbounded preceding.