Función de ventana DENSE_NTH
La función de ventana NTH_VALUE devuelve el valor de la expresión de la fila especificada del marco de ventana relativo a la primera fila de la ventana.
Sintaxis
NTH_VALUE (expr, offset) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] [ ORDER BY window_ordering frame_clause ] )
Argumentos
- expr
-
La columna o expresión de destino sobre la que opera la función.
- desplazamiento
-
Determina el número de fila relativo a la primera fila en la ventana para la cual devolver la expresión. El desplazamiento puede ser una constante o una expresión y debe ser un valor entero positivo mayor que 0.
- IGNORE NULLS
-
Una especificación opcional que indica que Amazon Redshift no debe tener en cuenta los valores nulos al momento de determinar qué fila utilizar. Los valores nulos se incluyen si no se indica IGNORE NULLS.
- 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
-
Especifica la partición de ventana, el ordenamiento y el marco de ventana.
- PARTITION BY window_partition
-
Establece el rango de registros para cada grupo en la cláusula OVER.
- ORDER BY window_ordering
-
Ordena las filas dentro de cada partición. Si se omite ORDER BY, el marco predeterminado consta de todas las filas en la partición.
- 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.
La función de ventana NTH_VALUE admite expresiones que utilizan cualquiera de los tipos de datos de Amazon Redshift. El valor devuelto es del mismo tipo que el valor de expr.
Ejemplos
En el siguiente ejemplo, se muestra la cantidad de asientos en el tercer lugar más grande de California, Florida y Nueva York, comparados con la cantidad de asientos en los demás lugares en esos estados:
select venuestate, venuename, venueseats,
nth_value(venueseats, 3)
ignore nulls
over(partition by venuestate order by venueseats desc
rows between unbounded preceding and unbounded following)
as third_most_seats
from (select * from venue where venueseats > 0 and
venuestate in('CA', 'FL', 'NY'))
order by venuestate;
venuestate | venuename | venueseats | third_most_seats
------------+--------------------------------+------------+------------------
CA | Qualcomm Stadium | 70561 | 63026
CA | Monster Park | 69843 | 63026
CA | McAfee Coliseum | 63026 | 63026
CA | Dodger Stadium | 56000 | 63026
CA | Angel Stadium of Anaheim | 45050 | 63026
CA | PETCO Park | 42445 | 63026
CA | AT&T Park | 41503 | 63026
CA | Shoreline Amphitheatre | 22000 | 63026
FL | Dolphin Stadium | 74916 | 65647
FL | Jacksonville Municipal Stadium | 73800 | 65647
FL | Raymond James Stadium | 65647 | 65647
FL | Tropicana Field | 36048 | 65647
NY | Ralph Wilson Stadium | 73967 | 20000
NY | Yankee Stadium | 52325 | 20000
NY | Madison Square Garden | 20000 | 20000
(15 rows)