Quelle est la différence entre une fonction de fenêtre et une fonction d'agrégation en SQL?
sobes.tech IA
Réponse de l'IA
Une fonction d'agrégation en SQL (par exemple, SUM, AVG, COUNT) calcule une valeur finale pour un groupe de lignes et retourne une seule ligne par groupe. Par exemple, SUM(salary) calcule la somme des salaires pour tout le groupe.
Une fonction de fenêtre (window function) fonctionne également avec des groupes de lignes, mais retourne un résultat pour chaque ligne, en tenant compte du contexte de la fenêtre (ensemble de lignes autour de la ligne courante). Par exemple, SUM(salary) OVER (PARTITION BY department) renverra la somme des salaires par département pour chaque ligne, sans réduire le résultat à une seule ligne.
Exemple:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
Ici, pour chaque ligne, la somme des salaires dans le département sera affichée, plutôt qu'une seule ligne par département, comme avec la fonction d'agrégation avec GROUP BY.