Función de ventana LAST_VALUE - Amazon Redshift

Función de ventana LAST_VALUE

Con un conjunto de filas ordenado, la función LAST_VALUE devuelve el valor de la expresión con respecto a la última fila del marco.

Para obtener información sobre cómo seleccionar la primera fila del marco, consulte Función de ventana FIRST_VALUE.

Sintaxis

LAST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

Argumentos

expresión

La columna o expresión de destino sobre la que opera la función.

IGNORE NULLS

La función devuelve el último valor en el marco que no sea NULL (o NULL si todos los valores son NULL).

RESPECT NULLS

Indica que Amazon Redshift debe incluir valores nulos al momento de determinar qué fila utilizar. De manera predeterminada, se admite RESPECT NULLS si no especifica IGNORE NULLS.

OVER

Introduce las cláusulas de ventana para la función.

PARTITION BY expr_list

Define la ventana para la función en términos de una o más expresiones.

ORDER BY order_list

Ordena las filas dentro de cada partición. Si no se especifica cláusula PARTITION BY, ORDER BY ordena toda la tabla. Si especifica una cláusula ORDER BY, también debe especificar una frame_clause (cláusula_de_marco).

Los resultados dependen del orden de los datos. En los siguientes casos, los resultados son no determinísticos:

  • Cuando no se especifica una cláusula ORDER BY y una partición tiene dos valores diferentes para una expresión

  • Cuando la expresión toma valores diferentes que corresponden al mismo valor en la lista ORDER BY.

frame_clause

Si se utiliza una cláusula ORDER BY para una función de agregación, se necesita una cláusula de marco explícita. La cláusula de marco limita el conjunto de filas en una ventana de función e incluye o excluye conjuntos de filas en del resultado ordenado. La cláusula de marco consta de la palabra clave ROWS y de los especificadores correspondientes. Consulte Resumen de la sintaxis de la función de ventana.

Tipo de retorno

Estas funciones admiten expresiones que utilizan tipos de datos de Amazon Redshift primitivos. El tipo de retorno es el mismo que el tipo de datos de la expression.

Ejemplos

En los siguientes ejemplos se utiliza la tabla VENUE de los datos de muestra de TICKIT. Para obtener más información, consulte Base de datos de muestra.

El siguiente ejemplo devuelve la capacidad de asientos para cada lugar en la tabla VENUE, con los resultados ordenados por capacidad (de mayor a menor). La función LAST_VALUE se utiliza para seleccionar el nombre del lugar que corresponda a la última fila en el marco: en este caso, la fila con la menor cantidad de asientos. Los resultados se particionan por estado, por lo que cuando cambia el valor VENUESTATE, se selecciona un nuevo último valor. El marco de la ventana está ilimitado de modo que el último valor se selecciona para cada fila en cada partición.

Para California, se devuelve Shoreline Amphitheatre para cada fila en la partición porque tiene la menor cantidad de asientos (22000).

select venuestate, venueseats, venuename, last_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | last_value -----------+------------+--------------------------------+------------------------------ CA | 70561 | Qualcomm Stadium | Shoreline Amphitheatre CA | 69843 | Monster Park | Shoreline Amphitheatre CA | 63026 | McAfee Coliseum | Shoreline Amphitheatre CA | 56000 | Dodger Stadium | Shoreline Amphitheatre CA | 45050 | Angel Stadium of Anaheim | Shoreline Amphitheatre CA | 42445 | PETCO Park | Shoreline Amphitheatre CA | 41503 | AT&T Park | Shoreline Amphitheatre CA | 22000 | Shoreline Amphitheatre | Shoreline Amphitheatre CO | 76125 | INVESCO Field | Coors Field CO | 50445 | Coors Field | Coors Field DC | 41888 | Nationals Park | Nationals Park FL | 74916 | Dolphin Stadium | Tropicana Field FL | 73800 | Jacksonville Municipal Stadium | Tropicana Field FL | 65647 | Raymond James Stadium | Tropicana Field FL | 36048 | Tropicana Field | Tropicana Field ...