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 ...