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)