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
Tecniche Avanzate in SQL

bookFunzioni 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:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

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.
question mark

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

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

Awesome!

Completion rate improved to 4.35

bookFunzioni 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:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

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.
question mark

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

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3
some-alt