

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzione finestra DENSE\$1RANK
<a name="r_WF_DENSE_RANK"></a>

La funzione finestra DENSE\$1RANK determina la classificazione di un valore in un gruppo di valori, in base all'espressione ORDER BY nella clausola OVER. Se è presente la clausola PARTITION BY facoltativa, le classificazioni vengono ripristinate per ciascun gruppo di righe. Righe con valori uguali per i criteri di classificazione ricevono la stessa classificazione. La funzione DENSE\$1RANK differisce da RANK per un aspetto: se due o più righe si legano, non c'è spazio nella sequenza dei valori classificati. Ad esempio, se due righe sono classificate come `1`, il livello successivo è `2`. 

È possibile avere funzioni di classificazione con diverse clausole PARTITION BY e ORDER BY nella stessa query. 

## Sintassi
<a name="r_WF_DENSE_RANK-synopsis"></a>

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

## Arguments (Argomenti)
<a name="r_WF_DENSE_RANK-arguments"></a>

( )   
La funzione non accetta argomenti, ma le parentesi vuote sono obbligatorie. 

OVER   
Le clausole finestra per la funzione DENSE\$1RANK. 

PARTITION BY *expr\$1list*   
(Facoltativo) Una o più espressioni che definiscono la finestra. 

ORDER BY *order\$1list*   
(Facoltativo) L'espressione su cui si basano i valori di classificazione. Se non viene specificato nessun PARTITION BY, ORDER BY utilizza l'intera tabella. Se ORDER BY viene omesso, il valore di restituzione è `1` per tutte le righe.   
Se ORDER BY non produce un ordinamento univoco, l'ordine delle righe è non deterministico. Per ulteriori informazioni, consultare [Ordinamento univoco dei dati per le funzioni finestra](c_Window_functions.md#r_Examples_order_by_WF). 

## Tipo restituito
<a name="c_Supported_data_types_wf_dense_rank"></a>

`BIGINT`

## Esempi
<a name="r_WF_DENSE_RANK-examples"></a>

Gli esempi seguenti utilizzano la tabella di esempio per le funzioni delle finestre. Per ulteriori informazioni, consulta [Tabella di esempio per gli esempi della funzione finestra](c_Window_functions.md#r_Window_function_example).

Nel seguente esempio viene ordinata la tabella in base alla quantità venduta e viene assegnata una classificazione densa e una classificazione regolare a ciascuna riga. I risultati vengono ordinati dopo aver applicato i risultati della funzione finestra. 

```
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 |
+---------+-----+-------+-----+
```

Notare la differenza nelle classificazioni assegnate allo stesso insieme di righe quando le funzioni DENSE\$1RANK e RANK vengono utilizzate fianco a fianco nella stessa query.

Nel seguente esempio la tabella viene partizionata per sellerid, ciascuna partizione viene ordinata in base alla quantità e viene assegnata una classificazione densa a ciascuna riga. I risultati vengono ordinati dopo aver applicato i risultati della funzione finestra. 

```
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 |
+---------+----------+-----+-------+
```

Per utilizzare correttamente l'ultimo esempio, utilizza il comando seguente per inserire una riga nella tabella WINSALES. Questa riga ha lo stesso buyerid, sellerid e qtysold di un'altra riga. Ciò causerà il collegamento di due righe nell'ultimo esempio e quindi mostrerà la differenza tra le funzioni DENSE\$1RANK e RANK.

```
INSERT INTO winsales VALUES(30009, '2/2/2003', 3, 'b', 20, NULL);
```

Nel seguente esempio la tabella viene partizionata per buyerid e sellerid, ciascuna partizione viene ordinata in base alla quantità e viene assegnata una classificazione densa e una classificazione regolare a ciascuna riga. I risultati vengono ordinati dopo aver applicato la funzione finestra. 

```
SELECT salesid, sellerid, qty, buyerid,
DENSE_RANK() OVER(PARTITION BY buyerid, sellerid ORDER BY qty DESC) AS d_rnk,
RANK() OVER (PARTITION BY buyerid, sellerid ORDER BY qty DESC) AS rnk
FROM winsales
ORDER BY rnk;

+---------+----------+-----+---------+-------+-----+
| salesid | sellerid | qty | buyerid | d_rnk | rnk |
+---------+----------+-----+---------+-------+-----+
|   20001 |        2 |  20 | b       |     1 |   1 |
|   30007 |        3 |  30 | c       |     1 |   1 |
|   10006 |        1 |  10 | c       |     1 |   1 |
|   10005 |        1 |  30 | a       |     1 |   1 |
|   20002 |        2 |  20 | c       |     1 |   1 |
|   30009 |        3 |  20 | b       |     1 |   1 |
|   40001 |        4 |  40 | a       |     1 |   1 |
|   30004 |        3 |  20 | b       |     1 |   1 |
|   10001 |        1 |  10 | c       |     1 |   1 |
|   40005 |        4 |  10 | a       |     2 |   2 |
|   30003 |        3 |  15 | b       |     2 |   3 |
|   30001 |        3 |  10 | b       |     3 |   4 |
+---------+----------+-----+---------+-------+-----+
```