← 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 avecROLLUP. - 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