

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

# Clausola QUALIFY
<a name="r_QUALIFY_clause"></a>

La clausola QUALIFY filtra i risultati di una funzione finestra calcolata in precedenza in base alle condizioni di ricerca specificate dall'utente. È possibile utilizzare la clausola per applicare condizioni di filtro al risultato di una funzione finestra senza utilizzare una sottoquery.

È simile alla [clausola HAVING](https://docs.aws.amazon.com/redshift/latest/dg/r_HAVING_clause.html), che applica una condizione per filtrare ulteriormente le righe di una clausola WHERE. La differenza tra QUALIFY e HAVING è che i risultati filtrati dalla clausola QUALIFY potrebbero essere basati sul risultato dell'esecuzione delle funzioni finestra sui dati. Puoi utilizzare entrambe le clausole QUALIFY e HAVING in un'unica query.

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

```
QUALIFY condition
```

**Nota**  
Se utilizzi la clausola QUALIFY direttamente dopo la clausola FROM, il nome della relazione FROM deve avere un alias specificato prima della clausola QUALIFY.

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

Gli esempi in questa sezione utilizzano i dati di esempio riportati di seguito.

```
create table store_sales (ss_sold_date date, ss_sold_time time, 
               ss_item text, ss_sales_price float);
insert into store_sales values ('2022-01-01', '09:00:00', 'Product 1', 100.0),
                               ('2022-01-01', '11:00:00', 'Product 2', 500.0),
                               ('2022-01-01', '15:00:00', 'Product 3', 20.0),
                               ('2022-01-01', '17:00:00', 'Product 4', 1000.0),
                               ('2022-01-01', '18:00:00', 'Product 5', 30.0),
                               ('2022-01-02', '10:00:00', 'Product 6', 5000.0),
                               ('2022-01-02', '16:00:00', 'Product 7', 5.0);
```

L'esempio seguente mostra come trovare i due articoli più costosi venduti dopo le 12:00 di ogni giorno.

```
SELECT *
FROM store_sales ss
WHERE ss_sold_time > time '12:00:00'
QUALIFY row_number()
OVER (PARTITION BY ss_sold_date ORDER BY ss_sales_price DESC) <= 2
               

 ss_sold_date | ss_sold_time |  ss_item  | ss_sales_price 
--------------+--------------+-----------+----------------
 2022-01-01   | 17:00:00     | Product 4 |           1000
 2022-01-01   | 18:00:00     | Product 5 |             30
 2022-01-02   | 16:00:00     | Product 7 |              5
```

È quindi possibile trovare l’ultimo articolo venduto ogni giorno.

```
SELECT *
FROM store_sales ss
QUALIFY last_value(ss_item)
OVER (PARTITION BY ss_sold_date ORDER BY ss_sold_time ASC
      ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) = ss_item;
               
ss_sold_date | ss_sold_time |  ss_item  | ss_sales_price 
--------------+--------------+-----------+----------------
 2022-01-01   | 18:00:00     | Product 5 |             30
 2022-01-02   | 16:00:00     | Product 7 |              5
```

L’esempio seguente restituisce gli stessi risultati dell’ultima query, ovvero l’ultimo articolo venduto ogni giorno, ma non utilizza la clausola QUALIFY.

```
SELECT * FROM (
  SELECT *,
  last_value(ss_item)
  OVER (PARTITION BY ss_sold_date ORDER BY ss_sold_time ASC
        ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ss_last_item
  FROM store_sales ss
)
WHERE ss_last_item = ss_item;
               
 ss_sold_date | ss_sold_time |  ss_item  | ss_sales_price | ss_last_item 
--------------+--------------+-----------+----------------+--------------
 2022-01-02   | 16:00:00     | Product 7 |              5 | Product 7
 2022-01-01   | 18:00:00     | Product 5 |             30 | Product 5
```