In cosa si differenziano le funzioni di finestra dal GROUP BY?
sobes.tech AI
Risposta dell'AI
Le funzioni di finestra e GROUP BY in SQL servono a scopi diversi, anche se entrambe lavorano con dati aggregati.
GROUP BY combina le righe secondo le colonne specificate e restituisce una riga per ogni gruppo. È possibile applicare funzioni aggregate (SUM, COUNT, ecc.), ma il risultato si riduce a una sola riga per gruppo.
Le funzioni di finestra calcolano aggregati o altri calcoli su un insieme di righe chiamato finestra, senza ridurre il numero di righe restituite. Ogni riga viene mantenuta, ma viene aggiunto il risultato della funzione calcolato sulla finestra.
Esempio:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Qui, per ogni riga, si calcola lo stipendio medio per dipartimento, ma le righe non vengono raggruppate — vediamo tutti i dipendenti con una colonna aggiuntiva.
A differenza di GROUP BY, le funzioni di finestra permettono di analizzare i dati nel contesto del gruppo, senza perdere i dettagli delle singole righe.