PaliSkill
SQL avancé

Leçon 5 / 9 — Chapitre 10: Mise en pratique : ressources humaines

ROLLUP : masse salariale par niveau hiérarchique

Comme aux chapitres 6, 8 et 9, ROLLUP ajoute un total général à un regroupement — ici, sur le niveau calculé par la CTE récursive de la leçon 2.

WITH RECURSIVE organigramme AS (
  SELECT id, nom, manager_id, 0 AS niveau, salaire
  FROM collaborateurs WHERE manager_id IS NULL

  UNION ALL

  SELECT c.id, c.nom, c.manager_id, o.niveau + 1, c.salaire
  FROM collaborateurs c
  JOIN organigramme o ON c.manager_id = o.id
)
SELECT niveau, SUM(salaire) AS masse_salariale
FROM organigramme
GROUP BY ROLLUP (niveau)
ORDER BY niveau;

Niveau 0 (Fatou) : 8000. Niveau 1 (Moussa, Aicha) : 6000 + 6000 = 12000. Niveau 2 (Ibrahim, Khadija, Ousmane, Ramata) : 4000 + 3000 + 3500 + 2800 = 13300. Total général : 8000 + 12000 + 13300 = 33300.

À retenir :

  • Une colonne calculée par une CTE récursive (ici, niveau) se regroupe ensuite exactement comme une colonne native, y compris avec ROLLUP.
  • Ce résultat révèle que le niveau le plus bas (niveau 2, avec le plus de personnes) ne concentre pas nécessairement le salaire moyen le plus élevé — mais peut malgré tout peser lourd dans la masse salariale totale du fait du nombre de personnes.

À vous de jouer : quelle est la valeur de masse_salariale pour le niveau 1 ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 80 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès