Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Funzioni Finestra | Alcuni Argomenti Aggiuntivi
Ottimizzazione SQL e Funzionalità delle Query

Funzioni Finestra

Scorri per mostrare il menu

Funzioni finestra sono una categoria di funzioni SQL che eseguono calcoli su un insieme di righe correlate alla riga corrente all'interno di una finestra o partizione definita.
Vengono utilizzate per eseguire calcoli e analisi su un sottoinsieme di righe senza ridurre il set di risultati, a differenza delle funzioni di aggregazione che tipicamente riducono il numero di righe restituite da una query.

Spiegazione

Supponiamo di avere la seguente tabella Sales:

12
SELECT * FROM sales

Se il nostro obiettivo è calcolare il fatturato totale per ciascun prodotto specifico e mostrarlo in una colonna aggiuntiva all'interno della tabella principale invece di generare una nuova tabella raggruppata, il risultato potrebbe apparire come segue:

Ma come possiamo farlo? Utilizzare GROUP BY non è adatto a questo compito perché questa clausola riduce il numero di righe raggruppandole secondo criteri specificati, restituendo solo gli ID e i relativi valori di somma.

Ecco perché le funzioni finestra sono fondamentali per affrontare questo problema.

Implementazione

Possiamo ottenere il risultato richiesto utilizzando la seguente query:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Descrizione della query
expand arrow
  • Nome funzione: SUM
  • Descrizione: Calcola la somma di una colonna specificata all'interno di una finestra definita.
  • Argomenti:
    • Amount: La colonna da sommare.
  • Funzione finestra:
    • OVER: Specifica la finestra su cui viene eseguita l'aggregazione.
    • PARTITION BY Product_ID: Divide il set di risultati in partizioni in base ai valori della colonna Product_ID. La somma viene calcolata separatamente per ciascuna partizione.
  • Alias: Total_Revenue_Per_Product: Il nome assegnato alla somma calcolata per ogni partizione.
  • Utilizzo: Questa funzione viene utilizzata per calcolare il ricavo totale per prodotto, sommando gli importi per ogni ID prodotto.
  • Risultato: Il set di risultati include le colonne Sales_ID, Product_ID, Sales_Date, Amount e Total_Revenue_Per_Product dalla tabella sales, dove Total_Revenue_Per_Product rappresenta il ricavo totale per ogni ID prodotto.
  • Ordinamento: Il set di risultati è ordinato per Sales_Date.

Una sintassi generale per la creazione di una funzione finestra può essere descritta come segue:

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT: indica che sta per iniziare una query;
  • aggregation_func(): la funzione di aggregazione (ad esempio, SUM, AVG, COUNT) che esegue un calcolo su un insieme di righe definito dalla finestra;
  • OVER: parola chiave che introduce la funzione finestra;
  • PARTITION BY: suddivide il risultato in partizioni in base ai valori delle colonne specificate. La funzione finestra opera separatamente su ciascuna partizione;
    • partition_column: la colonna utilizzata per partizionare il risultato.
  • ORDER BY: specifica l'ordinamento delle righe all'interno di ciascuna partizione;
    • order_column: la colonna utilizzata per ordinare le righe all'interno di ciascuna partizione.
  • FROM: indica la tabella di origine da cui vengono recuperati i dati;
    • table_name: il nome della tabella da cui vengono selezionati i dati.
question mark

Quale clausola viene utilizzata per definire la partizione di una funzione finestra?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 2
some-alt