Sobes.tech
Middle

Qual è la differenza tra una funzione finestra e una funzione di aggregazione in SQL?

sobes.tech AI

Risposta dell'AI

La funzione di aggregazione in SQL (ad esempio, SUM, AVG, COUNT) calcola un valore finale per un gruppo di righe e restituisce una riga per ogni gruppo. Ad esempio, SUM(salary) calcolerà la somma degli stipendi per l'intero gruppo.

La funzione finestra (window function) lavora anch'essa con gruppi di righe, ma restituisce un risultato per ogni riga, considerando il contesto della finestra (insieme di righe intorno alla riga corrente). Ad esempio, SUM(salary) OVER (PARTITION BY department) restituirà la somma degli stipendi per reparto per ogni riga, senza ridurre il risultato a una sola riga.

Esempio:

SELECT employee_id, department, salary,
       SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;

Qui, per ogni riga, verrà mostrata la somma degli stipendi nel reparto, anziché una sola riga per reparto, come con la funzione di aggregazione con GROUP BY.