Sobes.tech
Middle

À quoi servent les fonctions de fenêtre en SQL?

sobes.tech IA

Réponse de l'IA

Les fonctions de fenêtrage en SQL effectuent des agrégations de données sur un ensemble de lignes liées à la ligne courante, sans regrouper l'ensemble des résultats. Cela permet d'effectuer des calculs tels que des sommes cumulatives, des moyennes mobiles ou des rangs, tout en conservant toutes les lignes de la requête d'origine.

Les principaux objectifs de l'utilisation des fonctions de fenêtrage :

  • Classement : Attribution d'un rang à chaque ligne dans une fenêtre déterminée.
    -- Obtenir le rang des employés par salaire dans chaque département
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Calcul de statistiques par groupe de lignes sans regroupement : Agrégation de données dans une "fenêtre" de lignes, tout en conservant la granularité au niveau de la ligne.
    -- Calculer le salaire moyen par département pour chaque ligne
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Comparaison de la ligne courante avec d'autres lignes dans la fenêtre : Accès aux données des lignes précédentes ou suivantes dans la fenêtre.
    -- Obtenir le salaire du salarié précédent dans le département en ordre décroissant de salaire
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Calculs avec somme cumulative : Calcul de sommes, moyennes et autres agrégats en cumulant à partir du début.
    -- Calculer la somme cumulative des ventes par date
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

Contrairement aux fonctions d'agrégation classiques (GROUP BY), les fonctions de fenêtrage ne fusionnent pas les lignes, ce qui en fait un outil puissant pour les requêtes analytiques et l'analyse détaillée des données.