Sobes.tech
Middle

A cosa servono le funzioni finestra in SQL?

sobes.tech AI

Risposta dell'AI

Le funzioni di finestra in SQL eseguono aggregazioni di dati in un insieme di righe correlate alla riga corrente, ma senza raggruppare l'intero set di risultati. Questo permette di eseguire calcoli come somme cumulative, medie mobili o ranking, mantenendo tutte le righe della query originale.

Gli obiettivi principali dell'uso delle funzioni di finestra:

  • Classificazione: Assegnare un rango a ogni riga in una finestra determinata.
    -- Ottenere il rango dei dipendenti per salario all'interno di ogni dipartimento
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Calcolo di statistiche per gruppo di righe senza raggruppamento: Aggregazione di dati all'interno di una "finestra" di righe, mantenendo la granularità a livello di riga.
    -- Calcolare il salario medio per tutto il dipartimento per ogni riga
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Confronto della riga corrente con altre righe nella finestra: Accesso ai dati di righe precedenti o successive nella finestra.
    -- Ottenere il salario del dipendente precedente nel dipartimento in ordine decrescente di salario
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Calcoli con somma cumulativa: Calcolo di somme, medie e altre aggregazioni in un accumulo crescente.
    -- Calcolare la somma cumulativa delle vendite per data
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

A differenza delle funzioni di aggregazione normali (GROUP BY), le funzioni di finestra non fondono le righe, rendendole uno strumento potente per query analitiche e analisi dettagliate dei dati.