Funzioni Finestra
Le 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.
Sono 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
:
Se il nostro obiettivo è calcolare il fatturato totale per ciascun prodotto specifico e visualizzarlo 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?
L'utilizzo di 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:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
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: Divide 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.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 4.35
Funzioni Finestra
Scorri per mostrare il menu
Le 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.
Sono 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
:
Se il nostro obiettivo è calcolare il fatturato totale per ciascun prodotto specifico e visualizzarlo 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?
L'utilizzo di 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:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
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: Divide 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.
Grazie per i tuoi commenti!