Sobes.tech
Middle

Quelle est la différence entre les fonctions de fenêtre et le regroupement (GROUP BY) ?

sobes.tech IA

Réponse de l'IA

Les fonctions de fenêtre et le regroupement (GROUP BY) en SQL servent à des fins différentes, bien qu'elles travaillent toutes deux avec des données agrégées.

GROUP BY combine les lignes selon les colonnes spécifiées et retourne une ligne par groupe. Des fonctions d'agrégation (SUM, COUNT, etc.) peuvent être appliquées, mais le résultat est réduit à une seule ligne par groupe.

Fonctions de fenêtre calculent des agrégats ou d'autres calculs sur un ensemble de lignes appelé fenêtre, sans réduire le nombre de lignes retournées. Chaque ligne est conservée, mais un résultat de fonction calculé sur la fenêtre est ajouté.

Exemple:

SELECT
  employee_id,
  department_id,
  salary,
  AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;

Ici, pour chaque ligne, la moyenne des salaires par département est calculée, mais les lignes ne sont pas regroupées — on voit tous les employés avec une colonne supplémentaire.

Contrairement à GROUP BY, les fonctions de fenêtre permettent d'analyser les données dans le contexte du groupe, sans perdre la granularité des lignes individuelles.