

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Funciones de ventana
<a name="Window_functions"></a>

Con las funciones de ventana, puede crear consultas empresariales analíticas de manera más eficiente. Las funciones de ventana operan en una partición o "ventana" de un conjunto de resultados y devuelven un valor para cada fila de esa ventana. Por el contrario, las funciones que no son de ventana realizan sus cálculos respecto de cada fila en el conjunto de resultados. A diferencia de las funciones de grupo que agregan las filas de resultados, las funciones de ventana retienen todas las filas de la expresión de tabla. 

 Los valores devueltos se calculan con los valores de los conjuntos de filas en esa ventana. Para cada fila en la tabla, la ventana define un conjunto de filas que se usan para computar atributos adicionales. Una ventana se define utilizando una especificación de ventana (la cláusula OVER) y se basa en tres conceptos principales: 
+  *Particionamiento de ventana,* que forma grupos de filas (cláusula PARTITION). 
+  *Ordenación de ventana*, que define un orden o una secuencia de filas dentro de cada partición (cláusula ORDER BY). 
+  *Marcos de ventana*, que se definen en función de cada fila para restringir aún más el conjunto de filas (especificación ROWS). 

Las funciones de ventana son el último conjunto de operaciones realizadas en una consulta, excepto por la cláusula final ORDER BY. Todas las combinaciones y todas las cláusulas WHERE, GROUP BY y HAVING se completan antes de que se procesen las funciones de ventana. Por lo tanto, las funciones de ventana pueden figurar solamente en la lista SELECT o en la cláusula ORDER BY. Se pueden usar distintas funciones de ventana dentro de una única consulta con diferentes cláusulas de marco. También se pueden usar las funciones de ventana en otras expresiones escalares, como CASE. 

## Resumen de la sintaxis de la función de ventana
<a name="Window_function_synopsis"></a>

Las funciones de ventana siguen una sintaxis estándar, que es la que se indica a continuación.

```
function (expression) OVER (
[ PARTITION BY expr_list ]
[ ORDER BY order_list [ frame_clause ] ] )
```

 Aquí, *function* es una de las funciones que se describen en esta sección

La apariencia de *expr\$1list* es la siguiente.

```
expression | column_name [, expr_list ]
```

 El *order\$1list* tiene la siguiente apariencia. 

```
expression | column_name [ ASC | DESC ] 
[ NULLS FIRST | NULLS LAST ]
[, order_list ]
```

 La *frame\$1clause* tiene la siguiente apariencia. 

```
ROWS
{ UNBOUNDED PRECEDING | unsigned_value PRECEDING | CURRENT ROW } |

{ BETWEEN
{ UNBOUNDED PRECEDING | unsigned_value { PRECEDING | FOLLOWING } | CURRENT ROW}
AND
{ UNBOUNDED FOLLOWING | unsigned_value { PRECEDING | FOLLOWING } | CURRENT ROW }}
```

### Argumentos
<a name="Window_function_synopsis-arguments"></a>

 *función*   
La función de ventana. Para obtener más información, consulte las descripciones de las funciones individuales. 

OVER   
La cláusula que define la especificación de ventana. La cláusula OVER es obligatoria para las funciones de ventana y distingue funciones de ventana de otras funciones SQL. 

PARTITION BY *expr\$1list*   
(Opcional) La cláusula PARTITION BY subdivide el conjunto de resultado en particiones, muy similar a la cláusula GROUP BY. Si hay una cláusula de partición, la función se calcula para las filas en cada partición. Si no se especifica una cláusula de partición, una única partición tiene toda la tabla y la función se computa para la tabla completa.   
Las funciones de clasificación, DENSE\$1RANK, NTILE, RANK y ROW\$1NUMBER, requieren una comparación global de todas las filas en el conjunto de resultados. Cuando se utiliza una cláusula PARTITION BY, el optimizador de consultas puede ejecutar cada agregación en paralelo mediante la distribución de la carga de trabajo entre distintos sectores, según las particiones. Si no hay cláusula PARTITION BY, el paso de agregación se debe ejecutar en serie en un único sector, lo que puede tener consecuencias negativas importantes en el rendimiento, especialmente en el caso de clústeres grandes.  
AWS Clean Roomsno admite cadenas literales en las cláusulas PARTITION BY.

ORDER BY *order\$1list*   
(Opcional) La función de ventana se aplica a las filas dentro de cada partición ordenada, según la especificación de orden en ORDER BY. Esta cláusula ORDER BY es distinta y no guarda relación alguna con las cláusulas ORDER BY de *frame\$1clause*. La cláusula ORDER BY se puede usar sin la cláusula PARTITION BY.   
Para las funciones de clasificación, la cláusula ORDER BY identifica las medidas para los valores de clasificación. Para las funciones de agregación, las filas particionadas se deben ordenar antes de que la función de agregación se compute para cada marco. Para obtener más información acerca de los tipos de funciones de ventana, consulte [Funciones de ventana](#Window_functions).  
Se requieren identificadores de columnas o expresiones que toman el valor de los identificadores de columnas en la lista de ordenación. No se pueden usar constantes ni expresiones constantes como sustitutos para los nombres de columnas.   
Los valores NULLS se tratan como su propio grupo; se ordenan y se clasificación según la opción NULLS FIRST o NULLS LAST. De manera predeterminada, los valores NULL se ordenan y clasificación al final en orden ASC, y se ordenan y se clasifican primero en orden DESC.  
AWS Clean Roomsno admite cadenas literales en las cláusulas ORDER BY.  
 Si se omite la cláusula ORDER BY, el orden de las filas no es determinista.   
En cualquier sistema paralelo, por ejemploAWS Clean Rooms, cuando una cláusula ORDER BY no produce un orden único y total de los datos, el orden de las filas no es determinista. Es decir, si la expresión ORDER BY produce valores duplicados (un orden parcial), el orden de retorno de esas filas puede variar de una serie AWS Clean Rooms a otra. A su vez, las funciones de ventana pueden devolver resultados inesperados o inconsistente. Para obtener más información, consulte [Ordenación única de datos para funciones de ventana](#Examples_order_by_WF). 

 *column\$1name*   
Nombre de una columna que se particionará u ordenará. 

ASC \$1 DESC   
Opción que define el orden de ordenación para la expresión, de la siguiente manera:   
+ ASC: ascendente (por ejemplo, de menor a mayor para valores numéricos y de la A a la Z para cadenas con caracteres). Si no se especifica ninguna opción, los datos se ordenan, de manera predeterminada, en orden ascendente.
+ DESC: descendente (de mayor a menor para valores numéricos y de la Z a la A para cadenas). 

NULLS FIRST \$1 NULLS LAST  
Opción que especifica si los valores NULL se deben ordenar en primer lugar, antes de los valores no nulos, o al final, después de los valores no nulos. De manera predeterminada, los valores NULL se ordenan y clasificación al final en orden ASC, y se ordenan y se clasifican primero en orden DESC.

 *frame\$1clause*   
Para funciones de agregación, la cláusula de marco limita el conjunto de filas en una ventana de función al usar ORDER BY. Le permite incluir o excluir conjuntos de filas dentro del resultado ordenado. La cláusula de marco consta de la palabra clave ROWS y de los especificadores correspondientes.  
La cláusula de marco no se aplica a las funciones de clasificación. Además, no es necesaria cuando no se utiliza una cláusula ORDER BY en la cláusula OVER para una función de agrupación. Si se utiliza una cláusula ORDER BY para una función de agregación, se necesita una cláusula de marco explícita.  
Cuando no se especifica una cláusula ORDER BY, el marco implícito es ilimitado, lo que es equivalente a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING. 

ROWS  
Esta cláusula define el marco de ventana especificando un desplazamiento físico desde la fila actual .  
Esta cláusula especifica las filas en la ventana o partición actual que se combinará con el valor de la fila actual. Utiliza argumentos que especifican la posición de la fila, que puede ser antes o después de la fila actual. El punto de referencia para todos los marcos de ventana es la fila actual. Cada fila se convierte en la fila actual cuando el marco de ventana se desplaza hacia delante en la partición.  
El marco puede ser un conjunto simple de filas hasta la fila actual, que se incluye.  

```
{UNBOUNDED PRECEDING | offset PRECEDING | CURRENT ROW}
```
O bien, puede ser un conjunto de filas entre dos límites.  

```
BETWEEN
{ UNBOUNDED PRECEDING | offset { PRECEDING | FOLLOWING } | CURRENT ROW }
AND
{ UNBOUNDED FOLLOWING | offset { PRECEDING | FOLLOWING } | CURRENT ROW }
```
UNBOUNDED PRECEDING indica que la ventana comienza en la primera fila de la partición; *offset* PRECEDING indica que la ventana comienza en un número de filas equivalente al valor de desplazamiento antes de la fila actual. UNBOUNDED PRECEDING es el valor predeterminado.  
CURRENT ROW indica que la ventana comienza o finaliza en la fila actual.   
UNBOUNDED FOLLOWING indica que la ventana finaliza en la última fila de la partición; *offset* FOLLOWING indica que la ventana finaliza en un número de filas equivalente al valor de desplazamiento después de la fila actual.  
*offset* identifica un número físico de filas antes o después de la fila actual. En este caso, *offset* debe ser una constante que se evalúe como un valor numérico positivo. Por ejemplo, 5 FOLLOWING finaliza el marco de cinco filas después de la fila actual.  
Cuando no se especifica BETWEEN, el marco se limita implícitamente a la fila actual. Por ejemplo, `ROWS 5 PRECEDING` equivale a `ROWS BETWEEN 5 PRECEDING AND CURRENT ROW`. Además, `ROWS UNBOUNDED FOLLOWING` equivale a `ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING`.  
No puede especificar un marco en el que el límite de inicio sea mayor que el límite final. Por ejemplo, no puede especificar ninguno de estos marcos.   

```
between 5 following and 5 preceding
between current row and 2 preceding
between 3 following and current row
```

## Ordenación única de datos para funciones de ventana
<a name="Examples_order_by_WF"></a>

Si una cláusula ORDER BY para una función de ventana no produce una ordenación total y única de los datos, el orden de las filas no es determinístico. Si la expresión ORDER BY produce valores duplicados (una ordenación parcial), el orden de retorno de esas filas puede variar en distintas ejecuciones. En este caso, las funciones de ventana también pueden devolver resultados inesperados o inconsistentes. 

Por ejemplo, la siguiente consulta devuelve resultados diferentes con las múltiples ejecuciones. Estos resultados diferentes se producen porque `order by dateid` no genera una ordenación única de los datos para la función de ventana SUM. 

```
select dateid, pricepaid,
sum(pricepaid) over(order by dateid rows unbounded preceding) as sumpaid
from sales
group by dateid, pricepaid;

dateid | pricepaid |   sumpaid
--------+-----------+-------------
1827 |   1730.00 |     1730.00
1827 |    708.00 |     2438.00
1827 |    234.00 |     2672.00
...

select dateid, pricepaid,
sum(pricepaid) over(order by dateid rows unbounded preceding) as sumpaid
from sales
group by dateid, pricepaid;

dateid | pricepaid |   sumpaid
--------+-----------+-------------
1827 |    234.00 |      234.00
1827 |    472.00 |      706.00
1827 |    347.00 |     1053.00
...
```

 En este caso, agregar una segunda columna ORDER BY a la función de ventana puede solucionar el problema. 

```
select dateid, pricepaid,
sum(pricepaid) over(order by dateid, pricepaid rows unbounded preceding) as sumpaid
from sales
group by dateid, pricepaid;

dateid | pricepaid | sumpaid
--------+-----------+---------
1827 |    234.00 |  234.00
1827 |    337.00 |  571.00
1827 |    347.00 |  918.00
...
```

## Funciones compatibles
<a name="Window_function_supported"></a>

AWS Clean RoomsSpark SQL admite dos tipos de funciones de ventana: agregar y clasificar.

A continuación, se indican las funciones de agregado admitidas: 
+ [Función de ventana CUME\$1DIST](WF_CUME_DIST.md)
+ [Función de ventana DENSE\$1RANK](WF_DENSE_RANK.md)
+ [PRIMERA función de ventana](WF_FIRST.md)
+ [Función de ventana FIRST\$1VALUE](WF_first_value.md)
+ [Función de ventana LAG](WF_LAG.md) 
+ [Función de última ventana](WF-LAST.md)
+ [Función de ventana LAST\$1VALUE](WF_last_value.md)
+ [Función de ventana LEAD](WF_LEAD.md) 

A continuación, se indican las funciones de clasificación admitidas: 
+ [Función de ventana DENSE\$1RANK](WF_DENSE_RANK.md) 
+ [Función de ventana PERCENT\$1RANK](WF_PERCENT_RANK.md)
+ [Función de ventana RANK](WF_RANK.md) 
+ [Función de ventana ROW\$1NUMBER](WF_ROW_NUMBER.md)

## Tabla de muestra para ejemplos de funciones de ventana
<a name="Window_function_example"></a>

Puede encontrar ejemplos específicos de funciones de ventana con la descripción de cada función. Algunos de los ejemplos utilizan una tabla denominada WINSALES que tiene 11 filas, tal como se muestra a continuación.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/clean-rooms/latest/sql-reference/Window_functions.html)

# Función de ventana CUME\$1DIST
<a name="WF_CUME_DIST"></a>

Calcula la distribución acumulada de un valor dentro de una ventana o partición. Si se asume un orden ascendente, la distribución acumulada se determina utilizando esta fórmula:

`count of rows with values <= x / count of rows in the window or partition`

donde *x* equivale al valor en la fila actual de la columna especificada en la cláusula ORDER BY. El siguiente conjunto de datos ilustra el uso de esta fórmula:

```
Row#	Value	  Calculation    CUME_DIST
1        2500	   (1)/(5)	   0.2
2        2600	   (2)/(5)	   0.4
3        2800	   (3)/(5)	   0.6
4        2900	   (4)/(5)	   0.8
5        3100	   (5)/(5)	   1.0
```

El rango de valor de retorno es > 0 a 1, inclusive.

## Sintaxis
<a name="WF_CUME_DIST-synopsis"></a>

```
CUME_DIST ()
OVER ( 
[ PARTITION BY partition_expression ] 
[ ORDER BY order_list ]
)
```

## Argumentos
<a name="WF_CUME_DIST-arguments"></a>

OVER  
Una cláusula que especifica la partición de ventana. La cláusula OVER no puede tener una especificación de marco de ventana.

PARTITION BY *partition\$1expression*   
Opcional. Una expresión que establece el rango de registros para cada grupo en la cláusula OVER.

ORDER BY *order\$1list*   
La expresión sobre la cual se calcula la distribución acumulada. La expresión debe tener un tipo de dato numérico o ser implícitamente convertible a un dato numérico. Si se omite ORDER BY, el valor de retorno es 1 para todas las filas.   
Si ORDER BY no produce una ordenación única, el orden de las filas no es determinístico. Para obtener más información, consulte [Ordenación única de datos para funciones de ventana](Window_functions.md#Examples_order_by_WF). 

## Tipo de devolución
<a name="WF_CUME_DIST-returns"></a>

FLOAT8

## Ejemplos
<a name="WF_CUME_DIST-examples"></a>

En el siguiente ejemplo, se calcula la distribución acumulada de la cantidad para cada vendedor:

```
select sellerid, qty, cume_dist() 
over (partition by sellerid order by qty) 
from winsales;

sellerid   qty	   cume_dist
--------------------------------------------------
1         10.00	   0.33
1         10.64	   0.67
1         30.37	   1
3         10.04	   0.25
3         15.15	   0.5
3         20.75	   0.75
3         30.55	   1
2         20.09	   0.5
2         20.12	   1
4         10.12	   0.5
4         40.23	   1
```

Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example).

# Función de ventana DENSE\$1RANK
<a name="WF_DENSE_RANK"></a>

La función de ventana DENSE\$1RANK determina la clasificación de un valor en un grupo de valores, según la expresión ORDER BY en la cláusula OVER. Si hay una cláusula opcional PARTITION BY, las clasificaciones de restablecen para cada grupo de filas. Las filas con valores iguales para el criterio de clasificación reciben la misma clasificación. La función DENSE\$1RANK difiere de RANK en un aspecto: si se vinculan dos o más filas, no hay brecha en la secuencia de valores clasificados. Por ejemplo, si dos filas tienen clasificación 1, la siguiente clasificación es 2. 

Puede tener funciones de clasificación con diferentes cláusulas PARTITION BY y ORDER BY en la misma consulta. 

## Sintaxis
<a name="WF_DENSE_RANK-synopsis"></a>

```
DENSE_RANK () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## Argumentos
<a name="WF_DENSE_RANK-arguments"></a>

( )   
La función no toma argumentos, pero se necesitan los paréntesis vacíos. 

OVER   
Las cláusulas de ventana para la función DENSE\$1RANK. 

PARTITION BY *expr\$1list*   
Opcional. Una o más expresiones que definen la ventana. 

ORDER BY *order\$1list*   
Opcional. La expresión en que se basan los valores de clasificación. Si no se especifica PARTITION BY, ORDER BY utiliza toda la tabla. Si se omite ORDER BY, el valor de retorno es 1 para todas las filas.   
Si ORDER BY no produce una ordenación única, el orden de las filas no es determinístico. Para obtener más información, consulte [Ordenación única de datos para funciones de ventana](Window_functions.md#Examples_order_by_WF). 

## Tipo de devolución
<a name="Supported_data_types_wf_dense_rank"></a>

INTEGER

## Ejemplos
<a name="WF_DENSE_RANK-examples"></a>

En el siguiente ejemplo, se ordena la tabla según la cantidad vendida (en orden descendiente) y se asigna a cada fila tanto una clasificación densa como una regular. Los resultados se ordenan después de que se apliquen los resultados de la función de ventana. 

```
select salesid, qty,
dense_rank() over(order by qty desc) as d_rnk,
rank() over(order by qty desc) as rnk
from winsales
order by 2,1;

salesid | qty | d_rnk | rnk
---------+-----+-------+-----
10001 |  10 |     5 |   8
10006 |  10 |     5 |   8
30001 |  10 |     5 |   8
40005 |  10 |     5 |   8
30003 |  15 |     4 |   7
20001 |  20 |     3 |   4
20002 |  20 |     3 |   4
30004 |  20 |     3 |   4
10005 |  30 |     2 |   2
30007 |  30 |     2 |   2
40001 |  40 |     1 |   1
(11 rows)
```

Tenga en cuenta la diferencia entre las clasificaciones asignadas al mismo conjunto de filas cuando se usan las funciones DENSE\$1RANK y RANK en simultáneo en la misma consulta. Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example).

En el siguiente ejemplo, se divide la tabla según SELLERID, se ordena cada partición según la cantidad (en orden descendiente) y se asigna a cada fila una clasificación densa. Los resultados se ordenan después de que se apliquen los resultados de la función de ventana. 

```
select salesid, sellerid, qty,
dense_rank() over(partition by sellerid order by qty desc) as d_rnk
from winsales
order by 2,3,1;

salesid | sellerid | qty | d_rnk
---------+----------+-----+-------
10001 |        1 |  10 |     2
10006 |        1 |  10 |     2
10005 |        1 |  30 |     1
20001 |        2 |  20 |     1
20002 |        2 |  20 |     1
30001 |        3 |  10 |     4
30003 |        3 |  15 |     3
30004 |        3 |  20 |     2
30007 |        3 |  30 |     1
40005 |        4 |  10 |     2
40001 |        4 |  40 |     1
(11 rows)
```

 Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example).

# PRIMERA función de ventana
<a name="WF_FIRST"></a>

 Dado un conjunto ordenado de filas, FIRST devuelve el valor de la expresión especificada con respecto a la primera fila del marco de la ventana.

Para obtener información sobre cómo seleccionar la última fila del marco, consulte [Función de última ventana](WF-LAST.md).

## Sintaxis
<a name="WF_FIRST-synopsis"></a>

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

## Argumentos
<a name="WF_FIRST-arguments"></a>

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

IGNORE NULLS   
Cuando se utiliza esta opción con FIRST, la función devuelve el primer valor del marco que no sea NULL (o NULL si todos los valores son NULL).

RESPECT NULLS   
 Indica que se AWS Clean Rooms deben incluir valores nulos a la hora 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\$1list*   
Define la ventana para la función en términos de una o más expresiones. 

ORDER BY *order\$1list*   
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\$1clause (cláusula\$1de\$1marco)*.   
Los resultados de la función FIRST 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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Tipo de devolución
<a name="Supported_data_types_wf_first"></a>

Estas funciones admiten expresiones que utilizan tipos de AWS Clean Rooms datos primitivos. El tipo de retorno es el mismo que el tipo de datos de la *expression*.

## Ejemplos
<a name="WF_FIRST-examples"></a>

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 FIRST se utiliza para seleccionar el nombre del lugar que corresponde a la primera fila del cuadro: en este caso, la fila con el mayor número de asientos. Los resultados se particionan por estado, por lo que cuando cambia el valor VENUESTATE, se selecciona un nuevo primer valor. El marco de ventana está ilimitado de modo que el primer valor se selecciona para cada fila en cada partición. 

Para California, `Qualcomm Stadium` tiene la mayor cantidad de asientos (`70561`), por lo que nombre es el primer valor para todas las filas en la partición `CA`. 

```
select venuestate, venueseats, venuename,
first(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            |         first
-----------+------------+--------------------------------+------------------------------
CA         |      70561 | Qualcomm Stadium               | Qualcomm Stadium
CA         |      69843 | Monster Park                   | Qualcomm Stadium
CA         |      63026 | McAfee Coliseum                | Qualcomm Stadium
CA         |      56000 | Dodger Stadium                 | Qualcomm Stadium
CA         |      45050 | Angel Stadium of Anaheim       | Qualcomm Stadium
CA         |      42445 | PETCO Park                     | Qualcomm Stadium
CA         |      41503 | AT&T Park                      | Qualcomm Stadium
CA         |      22000 | Shoreline Amphitheatre         | Qualcomm Stadium
CO         |      76125 | INVESCO Field                  | INVESCO Field
CO         |      50445 | Coors Field                    | INVESCO Field
DC         |      41888 | Nationals Park                 | Nationals Park
FL         |      74916 | Dolphin Stadium                | Dolphin Stadium
FL         |      73800 | Jacksonville Municipal Stadium | Dolphin Stadium
FL         |      65647 | Raymond James Stadium          | Dolphin Stadium
FL         |      36048 | Tropicana Field                | Dolphin Stadium
...
```

# Función de ventana FIRST\$1VALUE
<a name="WF_first_value"></a>

 Dado un conjunto ordenado de filas, FIRST\$1VALUE devuelve el valor de la expresión especificada respecto de la primera fila en el marco de ventana.

Para obtener información sobre cómo seleccionar la última fila del marco, consulte [Función de ventana LAST\$1VALUE](WF_last_value.md).

## Sintaxis
<a name="WF_first_value-synopsis"></a>

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

## Argumentos
<a name="WF_first_value-arguments"></a>

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

IGNORE NULLS   
Cuando se utiliza esta opción con FIRST\$1VALUE, la función devuelve el primer valor en el marco que no sea NULL (o NULL si todos los valores son NULL).

RESPECT NULLS   
 Indica que se AWS Clean Rooms deben incluir valores nulos a la hora 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\$1list*   
Define la ventana para la función en términos de una o más expresiones. 

ORDER BY *order\$1list*   
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\$1clause (cláusula\$1de\$1marco)*.   
Los resultados de la función FIRST\$1VALUE 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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Tipo de devolución
<a name="Supported_data_types_wf_first_value"></a>

Estas funciones admiten expresiones que utilizan tipos de AWS Clean Rooms datos primitivos. El tipo de retorno es el mismo que el tipo de datos de la *expression*.

## Ejemplos
<a name="WF_first_value-examples"></a>

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 FIRST\$1VALUE se utiliza para seleccionar el nombre del lugar que corresponda a la primera fila en el marco: en este caso, la fila con la mayor cantidad de asientos. Los resultados se particionan por estado, por lo que cuando cambia el valor VENUESTATE, se selecciona un nuevo primer valor. El marco de ventana está ilimitado de modo que el primer valor se selecciona para cada fila en cada partición. 

Para California, `Qualcomm Stadium` tiene la mayor cantidad de asientos (`70561`), por lo que nombre es el primer valor para todas las filas en la partición `CA`. 

```
select venuestate, venueseats, venuename,
first_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            |         first_value
-----------+------------+--------------------------------+------------------------------
CA         |      70561 | Qualcomm Stadium               | Qualcomm Stadium
CA         |      69843 | Monster Park                   | Qualcomm Stadium
CA         |      63026 | McAfee Coliseum                | Qualcomm Stadium
CA         |      56000 | Dodger Stadium                 | Qualcomm Stadium
CA         |      45050 | Angel Stadium of Anaheim       | Qualcomm Stadium
CA         |      42445 | PETCO Park                     | Qualcomm Stadium
CA         |      41503 | AT&T Park                      | Qualcomm Stadium
CA         |      22000 | Shoreline Amphitheatre         | Qualcomm Stadium
CO         |      76125 | INVESCO Field                  | INVESCO Field
CO         |      50445 | Coors Field                    | INVESCO Field
DC         |      41888 | Nationals Park                 | Nationals Park
FL         |      74916 | Dolphin Stadium                | Dolphin Stadium
FL         |      73800 | Jacksonville Municipal Stadium | Dolphin Stadium
FL         |      65647 | Raymond James Stadium          | Dolphin Stadium
FL         |      36048 | Tropicana Field                | Dolphin Stadium
...
```

# Función de ventana LAG
<a name="WF_LAG"></a>

 La función de ventana LAG devuelve los valores para una fila en un desplazamiento dado arriba (antes) de la fila actual en la partición. 

## Sintaxis
<a name="WF_LAG-synopsis"></a>

```
LAG (value_expr [, offset ])
[ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )
```

## Argumentos
<a name="WF_LAG-arguments"></a>

 *value\$1expr*   
 La columna o expresión de destino sobre la que opera la función. 

 *desplazamiento*   
 Un parámetro opcional que especifica la cantidad de filas antes de la fila actual para la cual devolver valores. El desplazamiento puede ser un valor entero constante o una expresión que tome un valor entero. Si no especifica un desfase, `1` lo AWS Clean Rooms utiliza como valor por defecto. Un desplazamiento de `0` indica la fila actual. 

IGNORE NULLS   
Especificación opcional que indica que se AWS Clean Rooms deben omitir los valores nulos a la hora de determinar qué fila utilizar. Los valores nulos se incluyen si no se indica IGNORE NULLS.   
Puede usar una expresión NVL o COALESCE para reemplazar los valores nulos con otro valor. 

RESPECT NULLS   
 Indica que se AWS Clean Rooms deben incluir valores nulos en la determinación de la fila que se debe utilizar. De manera predeterminada, se admite RESPECT NULLS si no especifica IGNORE NULLS. 

OVER   
Especifica la partición de ventana y el ordenamiento. La cláusula OVER no puede tener una especificación de marco de ventana. 

PARTITION BY *window\$1partition*   
Un argumento opcional que establece el rango de registros para cada grupo en la cláusula OVER. 

ORDER BY *window\$1ordering*   
Ordena las filas dentro de cada partición. 

La función de ventana LAG admite expresiones que utilizan cualquiera de los tipos de AWS Clean Rooms datos. El tipo de valor devuelto es el mismo que el tipo de la *value\$1expr (expresión\$1de\$1valor)*. 

## Ejemplos
<a name="WF_LAG-examples"></a>

 En el siguiente ejemplo, se muestra la cantidad de tickets vendidos al comprador con un ID de comprador de 3 y la hora en que el comprador 3 compró los tickets. Para comparar cada venta con la venta anterior para el comprador 3, la consulta devuelve la cantidad anterior vendida para cada venta. Debido a que no hay compras antes del 01/16/2008, el primer valor de cantidad vendida anterior es nulo: 

```
select buyerid, saletime, qtysold,
lag(qtysold,1) over (order by buyerid, saletime) as prev_qtysold
from sales where buyerid = 3 order by buyerid, saletime;

buyerid |      saletime       | qtysold | prev_qtysold
---------+---------------------+---------+--------------
3 | 2008-01-16 01:06:09 |       1 |
3 | 2008-01-28 02:10:01 |       1 |            1
3 | 2008-03-12 10:39:53 |       1 |            1
3 | 2008-03-13 02:56:07 |       1 |            1
3 | 2008-03-29 08:21:39 |       2 |            1
3 | 2008-04-27 02:39:01 |       1 |            2
3 | 2008-08-16 07:04:37 |       2 |            1
3 | 2008-08-22 11:45:26 |       2 |            2
3 | 2008-09-12 09:11:25 |       1 |            2
3 | 2008-10-01 06:22:37 |       1 |            1
3 | 2008-10-20 01:55:51 |       2 |            1
3 | 2008-10-28 01:30:40 |       1 |            2
(12 rows)
```

# Función de última ventana
<a name="WF-LAST"></a>

 Dado un conjunto ordenado de filas, la función LAST 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 [PRIMERA función de ventana](WF_FIRST.md). 

## Sintaxis
<a name="WF-LAST-syntax"></a>

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

## Argumentos
<a name="WF-LAST-arguments"></a>

 *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 se AWS Clean Rooms deben incluir valores nulos a la hora 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\$1list*   
Define la ventana para la función en términos de una o más expresiones. 

ORDER BY *order\$1list*   
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\$1clause (cláusula\$1de\$1marco)*.   
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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Tipo de devolución
<a name="WF-LAST-return-type"></a>

Estas funciones admiten expresiones que utilizan tipos de AWS Clean Rooms datos primitivos. El tipo de retorno es el mismo que el tipo de datos de la *expression*.

## Ejemplos
<a name="WF-LAST-examples"></a>

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 se utiliza para seleccionar el nombre del lugar que corresponde a la última fila del cuadro: en este caso, la fila con el menor número 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(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
-----------+------------+--------------------------------+------------------------------
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
...
```

# Función de ventana LAST\$1VALUE
<a name="WF_last_value"></a>

 Con un conjunto de filas ordenado, la función LAST\$1VALUE 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\$1VALUE](WF_first_value.md).

## Sintaxis
<a name="WF_last_value-synopsis"></a>

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

## Argumentos
<a name="WF_last_value-arguments"></a>

 *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 se AWS Clean Rooms deben incluir valores nulos a la hora 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\$1list*   
Define la ventana para la función en términos de una o más expresiones. 

ORDER BY *order\$1list*   
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\$1clause (cláusula\$1de\$1marco)*.   
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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Tipo de devolución
<a name="Supported_data_types_wf_last_value"></a>

Estas funciones admiten expresiones que utilizan tipos de AWS Clean Rooms datos primitivos. El tipo de retorno es el mismo que el tipo de datos de la *expression*.

## Ejemplos
<a name="WF_last_value-examples"></a>

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\$1VALUE 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
...
```

# Función de ventana LEAD
<a name="WF_LEAD"></a>

 La función de ventana LEAD devuelve los valores para una fila en un desplazamiento dado abajo (después) de la fila actual en la partición. 

## Sintaxis
<a name="WF_LEAD-synopsis"></a>

```
LEAD (value_expr [, offset ])
[ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )
```

## Argumentos
<a name="WF_LEAD-arguments"></a>

 *value\$1expr*   
La columna o expresión de destino sobre la que opera la función. 

 *desplazamiento*   
 Un parámetro opcional que especifica la cantidad de filas debajo de la fila actual para la cual devolver valores. El desplazamiento puede ser un valor entero constante o una expresión que tome un valor entero. Si no especifica un desfase, `1` lo AWS Clean Rooms utiliza como valor por defecto. Un desplazamiento de `0` indica la fila actual. 

IGNORE NULLS   
Especificación opcional que indica que se AWS Clean Rooms deben omitir los valores nulos a la hora de determinar qué fila utilizar. Los valores nulos se incluyen si no se indica IGNORE NULLS.   
Puede usar una expresión NVL o COALESCE para reemplazar los valores nulos con otro valor. 

RESPECT NULLS   
 Indica que se AWS Clean Rooms deben incluir valores nulos en la determinación de la fila que se debe utilizar. De manera predeterminada, se admite RESPECT NULLS si no especifica IGNORE NULLS. 

OVER   
Especifica la partición de ventana y el ordenamiento. La cláusula OVER no puede tener una especificación de marco de ventana. 

PARTITION BY *window\$1partition*   
Un argumento opcional que establece el rango de registros para cada grupo en la cláusula OVER. 

ORDER BY *window\$1ordering*   
Ordena las filas dentro de cada partición. 

La función de ventana LEAD admite expresiones que utilizan cualquiera de los tipos de AWS Clean Rooms datos. El tipo de valor devuelto es el mismo que el tipo de la *value\$1expr (expresión\$1de\$1valor)*. 

## Ejemplos
<a name="WF_LEAD-examples"></a>

 En el siguiente ejemplo, se proporciona la comisión para eventos en la tabla SALES para los cuales se vendieron tickets el 1 y el 2 de enero de 2008, y la comisión pagada por la venta de tickets de la venta subsiguiente. 

```
select eventid, commission, saletime,
lead(commission, 1) over (order by saletime) as next_comm
from sales where saletime between '2008-01-01 00:00:00' and '2008-01-02 12:59:59'
order by saletime;

eventid | commission |      saletime       | next_comm
---------+------------+---------------------+-----------
6213 |      52.05 | 2008-01-01 01:00:19 |    106.20
7003 |     106.20 | 2008-01-01 02:30:52 |    103.20
8762 |     103.20 | 2008-01-01 03:50:02 |     70.80
1150 |      70.80 | 2008-01-01 06:06:57 |     50.55
1749 |      50.55 | 2008-01-01 07:05:02 |    125.40
8649 |     125.40 | 2008-01-01 07:26:20 |     35.10
2903 |      35.10 | 2008-01-01 09:41:06 |    259.50
6605 |     259.50 | 2008-01-01 12:50:55 |    628.80
6870 |     628.80 | 2008-01-01 12:59:34 |     74.10
6977 |      74.10 | 2008-01-02 01:11:16 |     13.50
4650 |      13.50 | 2008-01-02 01:40:59 |     26.55
4515 |      26.55 | 2008-01-02 01:52:35 |     22.80
5465 |      22.80 | 2008-01-02 02:28:01 |     45.60
5465 |      45.60 | 2008-01-02 02:28:02 |     53.10
7003 |      53.10 | 2008-01-02 02:31:12 |     70.35
4124 |      70.35 | 2008-01-02 03:12:50 |     36.15
1673 |      36.15 | 2008-01-02 03:15:00 |   1300.80
...
(39 rows)
```

# Función de ventana PERCENT\$1RANK
<a name="WF_PERCENT_RANK"></a>

Calcula la clasificación de porcentaje de una fila dada. La clasificación de porcentaje se determina utilizando la siguiente fórmula:

`(x - 1) / (the number of rows in the window or partition - 1)`

donde *x* es la clasificación de la fila actual. El siguiente conjunto de datos ilustra el uso de esta fórmula:

```
Row#	Value	Rank	Calculation	PERCENT_RANK
1	15	1	(1-1)/(7-1)	0.0000
2	20	2	(2-1)/(7-1)	0.1666
3	20	2	(2-1)/(7-1)	0.1666
4	20	2	(2-1)/(7-1)	0.1666
5	30	5	(5-1)/(7-1)	0.6666
6	30	5	(5-1)/(7-1)	0.6666
7	40	7	(7-1)/(7-1)	1.0000
```

El rango de valor de retorno es 0 a 1, inclusive. La primera fila en cualquier conjunto tiene un PERCENT\$1RANK de 0.

## Sintaxis
<a name="WF_PERCENT_RANK-synopsis"></a>

```
PERCENT_RANK ()
OVER ( 
[ PARTITION BY partition_expression ] 
[ ORDER BY order_list ]
)
```

## Argumentos
<a name="WF_PERCENT_RANK-arguments"></a>

( )   
La función no toma argumentos, pero se necesitan los paréntesis vacíos. 

OVER  
Una cláusula que especifica la partición de ventana. La cláusula OVER no puede tener una especificación de marco de ventana.

PARTITION BY *partition\$1expression*   
Opcional. Una expresión que establece el rango de registros para cada grupo en la cláusula OVER.

ORDER BY *order\$1list*   
Opcional. La expresión sobre la cual se calcula la clasificación de porcentaje. La expresión debe tener un tipo de dato numérico o ser implícitamente convertible a un dato numérico. Si se omite ORDER BY, el valor de retorno es 0 para todas las filas.  
Si ORDER BY no produce un ordenamiento único, el orden de las filas no es determinístico. Para obtener más información, consulte [Ordenación única de datos para funciones de ventana](Window_functions.md#Examples_order_by_WF). 

## Tipo de devolución
<a name="WF_PERCENT_RANK-return-type"></a>

FLOAT8

## Ejemplos
<a name="WF_PERCENT_RANK-examples"></a>

En el siguiente ejemplo, se calcula la clasificación de porcentaje de las cantidades de ventas para cada vendedor:

```
select sellerid, qty, percent_rank() 
over (partition by sellerid order by qty) 
from winsales;

sellerid	qty		percent_rank
----------------------------------------
1		10.00		0.0
1		10.64		0.5
1		30.37		1.0
3		10.04		0.0
3		15.15		0.33
3		20.75		0.67
3		30.55		1.0
2		20.09		0.0
2		20.12		1.0
4		10.12		0.0
4		40.23		1.0
```

Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example).

# Función de ventana RANK
<a name="WF_RANK"></a>

 La función de ventana RANK determina la clasificación de un valor en un grupo de valores, según la expresión ORDER BY en la cláusula OVER. Si hay una cláusula opcional PARTITION BY, las clasificaciones de restablecen para cada grupo de filas. Las filas con valores iguales para los criterios de clasificación reciben la misma clasificación. AWS Clean Roomssuma el número de filas empatadas a la clasificación empatada para calcular la siguiente clasificación y, por lo tanto, es posible que las filas no sean números consecutivos. Por ejemplo, si dos filas tienen clasificación 1, la siguiente clasificación es 3. 

 RANK difiere de [Función de ventana DENSE\$1RANK](WF_DENSE_RANK.md) en un aspecto: para DENSE\$1RANK, si se vinculan dos o más filas, no hay brecha en la secuencia de valores clasificados. Por ejemplo, si dos filas tienen clasificación 1, la siguiente clasificación es 2.

Puede tener funciones de clasificación con diferentes cláusulas PARTITION BY y ORDER BY en la misma consulta. 

## Sintaxis
<a name="WF_RANK-synopsis"></a>

```
RANK () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## Argumentos
<a name="WF_RANK-arguments"></a>

( )   
La función no toma argumentos, pero se necesitan los paréntesis vacíos. 

OVER   
Las cláusulas de ventana para la función RANK.

PARTITION BY *expr\$1list*   
Opcional. Una o más expresiones que definen la ventana. 

ORDER BY *order\$1list*   
Opcional. Define las columnas en que se basan los valores de clasificación. Si no se especifica PARTITION BY, ORDER BY utiliza toda la tabla. Si se omite ORDER BY, el valor de retorno es 1 para todas las filas.   
Si ORDER BY no produce un ordenamiento único, el orden de las filas no es determinístico. Para obtener más información, consulte [Ordenación única de datos para funciones de ventana](Window_functions.md#Examples_order_by_WF). 

## Tipo de devolución
<a name="Supported_data_types_wf_rank"></a>

INTEGER

## Ejemplos
<a name="WF_RANK-examples"></a>

En el siguiente ejemplo, se ordena la tabla por la cantidad vendida (orden ascendiente predeterminado) y se asigna una clasificación a cada fila. Un valor de 1 es la mejor clasificación. Los resultados se ordenan después de que se apliquen los resultados de la función de ventana: 

```
select salesid, qty,
rank() over (order by qty) as rnk
from winsales
order by 2,1;

salesid | qty | rnk
--------+-----+-----
10001 |  10 |  1
10006 |  10 |  1
30001 |  10 |  1
40005 |  10 |  1
30003 |  15 |  5
20001 |  20 |  6
20002 |  20 |  6
30004 |  20 |  6
10005 |  30 |  9
30007 |  30 |  9
40001 |  40 |  11
(11 rows)
```

Tenga en cuenta que la cláusula ORDER BY externa de este ejemplo incluye las columnas 2 y 1 para garantizar que AWS Clean Rooms devuelva resultados ordenados de forma coherente cada vez que se ejecute la consulta. Por ejemplo, las filas con ventas IDs 10001 y 10006 tienen valores de QTY y RNK idénticos. Ordenar el resultado final por columna 1 garantiza que la fila 10001 siempre esté antes que la 10006. Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example).

En el siguiente ejemplo, la ordenación se invierte para la función de ventana (`order by qty desc`). Ahora, el valor más alto de clasificación se aplica al valor QTY más alto. 

```
select salesid, qty,
rank() over (order by qty desc) as rank
from winsales
order by 2,1;

 salesid | qty | rank
---------+-----+-----
   10001 |  10 |   8
   10006 |  10 |   8
   30001 |  10 |   8
   40005 |  10 |   8
   30003 |  15 |   7
   20001 |  20 |   4
   20002 |  20 |   4
   30004 |  20 |   4
   10005 |  30 |   2
   30007 |  30 |   2
   40001 |  40 |   1
(11 rows)
```

Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example). 

En el siguiente ejemplo, se divide la tabla según SELLERID, se ordena cada partición según la cantidad (en orden descendiente) y se asigna una clasificación a cada fila. Los resultados se ordenan después de que se apliquen los resultados de la función de ventana. 

```
select salesid, sellerid, qty, rank() over
(partition by sellerid
order by qty desc) as rank
from winsales
order by 2,3,1;

salesid | sellerid | qty | rank
--------+----------+-----+-----
  10001 |        1 |  10 |  2
  10006 |        1 |  10 |  2
  10005 |        1 |  30 |  1
  20001 |        2 |  20 |  1
  20002 |        2 |  20 |  1
  30001 |        3 |  10 |  4
  30003 |        3 |  15 |  3
  30004 |        3 |  20 |  2
  30007 |        3 |  30 |  1
  40005 |        4 |  10 |  2
  40001 |        4 |  40 |  1
(11 rows)
```

# Función de ventana ROW\$1NUMBER
<a name="WF_ROW_NUMBER"></a>

Determina el número ordinal de la fila actual dentro de un grupo de filas, contando desde 1, según la expresión ORDER BY en la cláusula OVER. Si hay una cláusula opcional PARTITION BY, los números ordinales se restablecen para cada grupo de filas. Las filas con valores iguales para las expresiones ORDER BY reciben los diferentes números de fila de manera no determinística. 

## Sintaxis
<a name="WF_ROW_NUMBER-synopsis"></a>

```
ROW_NUMBER () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## Argumentos
<a name="WF_ROW_NUMBER-arguments"></a>

( )   
La función no toma argumentos, pero se necesitan los paréntesis vacíos. 

OVER   
Las cláusulas de ventana para la función ROW\$1NUMBER. 

PARTITION BY *expr\$1list*   
Opcional. Una o más expresiones que definen la función ROW\$1NUMBER. 

ORDER BY *order\$1list*   
Opcional. La expresión que define las columnas en que se basan los números de fila. Si no se especifica PARTITION BY, ORDER BY utiliza toda la tabla.   
Si ORDER BY no produce una ordenación única o se omite, el orden de las filas no es determinístico. Para obtener más información, consulte [Ordenación única de datos para funciones de ventana](Window_functions.md#Examples_order_by_WF). 

## Tipo de devolución
<a name="Supported_data_types_WF_ROW_NUMBER"></a>

BIGINT

## Ejemplos
<a name="WF_ROW_NUMBER-examples"></a>

En el siguiente ejemplo, se particiona la tabla según SELLERID y se ordena cada partición según QTY (en orden ascendiente); luego, se asigna un número a cada fila. Los resultados se ordenan después de que se apliquen los resultados de la función de ventana. 

```
select salesid, sellerid, qty, 
row_number() over 
(partition by sellerid
 order by qty asc) as row
from winsales
order by 2,4;

 salesid | sellerid | qty | row
---------+----------+-----+-----
   10006 |        1 |  10 |   1
   10001 |        1 |  10 |   2
   10005 |        1 |  30 |   3
   20001 |        2 |  20 |   1
   20002 |        2 |  20 |   2
   30001 |        3 |  10 |   1
   30003 |        3 |  15 |   2
   30004 |        3 |  20 |   3
   30007 |        3 |  30 |   4
   40005 |        4 |  10 |   1
   40001 |        4 |  40 |   2
(11 rows)
```

 Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](Window_functions.md#Window_function_example). 