Maîtriser SQL au-delà du SELECT *
Fonctions de fenêtrage, CTE récursives, requêtes hiérarchiques, optimisation d’index, procédures stockées — devenez un expert SQL reconnu. Une formation dispensée par ISOSET, l’institut qui réinvente l’apprentissage des bases de données.
📊 Window Functions
ROW_NUMBER, RANK, LAG, LEAD, SUM OVER. Calculs analytiques sans groupement destructif. Exemple : classement des ventes par région, cumul glissant, différence avec mois précédent.
🔄 CTE & requêtes récursives
Common Table Expressions (WITH) pour clarifier les requêtes complexes. Récursivité : arbres hiérarchiques (organigrammes, catégories, graphes).
⚡ Optimisation & indexation
Comprendre les plans d’exécution, créer des index couvrants, éviter les scans de tables, utiliser les statistiques. Améliorer les performances de 10x à 100x.
SELECT product_name, category, price, RANK() OVER (PARTITION BY category ORDER BY price DESC) AS rank_in_cat FROM products; -- cumul des ventes sur 3 mois glissants SELECT month, amount, SUM(amount) OVER (ORDER BY month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_3m FROM sales;
WITH RECURSIVE employee_tree AS ( SELECT id, name, manager_id, 1 AS level FROM employees WHERE manager_id IS NULL UNION ALL SELECT e.id, e.name, e.manager_id, et.level + 1 FROM employees e JOIN employee_tree et ON e.manager_id = et.id ) SELECT * FROM employee_tree;
Fonctions de fenêtrage essentielles
| Fonction | Description | Exemple d’usage |
|---|---|---|
| ROW_NUMBER() | Numérotation unique par partition | Dédoublonner, paginer |
| RANK() / DENSE_RANK() | Classement avec ou sans trous | Top 10 des ventes par région |
| LAG() / LEAD() | Accéder à la ligne précédente / suivante | Différence de CA mois / mois |
| SUM() OVER() | Somme cumulée ou glissante | Stock projeté, séries temporelles |
| FIRST_VALUE() / LAST_VALUE() | Première / dernière valeur de la fenêtre | Premier prix dans une période |
🔧 Techniques d’optimisation des requêtes
CREATE INDEX idx_sales_date_amount ON sales(order_date, amount) INCLUDE (customer_id); -- La requête suivante utilisera uniquement l'index (index-only scan) SELECT order_date, amount, customer_id FROM sales WHERE order_date BETWEEN '2025-01-01' AND '2025-06-01';
CREATE OR REPLACE FUNCTION update_inventory(product_id INT, qty INT) RETURNS VOID LANGUAGE plpgsql AS $$ BEGIN UPDATE products SET stock = stock - qty WHERE id = product_id; INSERT INTO inventory_log(product_id, quantity_changed, changed_at) VALUES (product_id, -qty, NOW()); COMMIT; END; $$;
BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- Gestion des conflits : verrous, deadlocks, retry
🎓 La formation ISOSET : Devenez architecte SQL
ISOSET propose un cursus intensif de 8 semaines : requêtes complexes, fonctions fenêtrées, CTE récursives, optimisation de performances, gestion des transactions avancées.
Chaque apprenant réalise un projet final : optimisation d’une base de données réelle (million de lignes) avec réécriture de requêtes et indexation stratégique. La méthode ISOSET combine théorie, labs interactifs et cas clients.
Témoignages d’anciens élèves – 93% d’insertion professionnelle dans les 6 mois.
🏢 Entreprises : audit & formation sur mesure
ISOSET Entreprises propose des ateliers de montée en compétence SQL pour vos équipes data, DBA et dev. Audit de requêtes critiques, optimisation des bases de production, mise en place de bonnes pratiques.
🧪 Ateliers SQL pour jeunes talents
ISOSET Jeunes initie les collégiens et lycéens aux bases de données relationnelles via des projets concrets (gestion de bibliothèque, base de données e-commerce).