Module 1 : Comprendre les bases de données
1.1 — Pourquoi les bases de données ? Aperçu
Module 2 : Installation et découverte de PostgreSQL
2.1 — Installer PostgreSQL Aperçu
Module 3 : Le langage SQL — Les fondamentaux
3.1 — SELECT : lire des données Aperçu
Module 4 : Conception et création de tables
4.1 — Clés primaires et identifiants Aperçu
Module 5 : Requêtes SELECT avancées
5.1 — DISTINCT, CASE, COALESCE, NULLIF Aperçu
Module 6 : Jointures SQL
6.1 — INNER JOIN : le cœur des bases relationnelles Aperçu
Module 7 : Agrégation et regroupement avancés
7.1 — GROUP BY approfondi Aperçu
Module 8 : Sous-requêtes et CTE
8.1 — Sous-requêtes scalaires et de liste Aperçu
Module 9 : Fonctions SQL intégrées
9.1 — Fonctions de chaînes Aperçu
Module 10 : Indexation et performances
10.1 — Comprendre EXPLAIN ANALYZE Aperçu
Module 11 : Contraintes avancées et intégrité
11.1 — Domaines et types personnalisés Aperçu
Module 12 : Transactions et concurrence
12.1 — Transactions ACID Aperçu
Module 13 : Vues et vues matérialisées
13.1 — Vues simples et modifiables Aperçu
Module 14 : Procédures stockées et fonctions PL/pgSQL
14.1 — Premiers pas en PL/pgSQL Aperçu
Module 15 : Triggers et événements
15.1 — Créer un trigger simple Aperçu
Module 16 : Sécurité, rôles et permissions
16.1 — Rôles, utilisateurs et GRANT Aperçu
Module 17 : Sauvegarde, restauration et maintenance
17.1 — pg_dump et pg_restore Aperçu
Module 18 : Types de données avancés
18.1 — JSON et JSONB Aperçu
Module 19 : Recherche plein texte (Full-Text Search)
19.1 — tsvector et tsquery Aperçu
Module 20 : Projet final — Conception complète
20.1 — Analyse du besoin et cahier des charges Aperçu

Le reste de la formation est réservé aux inscrits.

S'inscrire gratuitement
Module 5 : Requêtes SELECT avancées Aperçu gratuit

5.1 — DISTINCT, CASE, COALESCE, NULLIF

📋 Objectifs d'apprentissage

  • Éliminer les doublons avec DISTINCT
  • Créer des colonnes calculées conditionnelles avec CASE WHEN
  • Gérer les NULL avec COALESCE et NULLIF

DISTINCT

SELECT DISTINCT pays FROM clients; -- Liste unique des pays

CASE WHEN

SELECT nom, salaire,
  CASE WHEN salaire < 3000 THEN 'Junior'
       WHEN salaire < 6000 THEN 'Confirmé'
       ELSE 'Senior'
  END AS niveau
FROM employes;

COALESCE et NULLIF

-- COALESCE : première valeur non NULL
SELECT nom, COALESCE(telephone, 'Non renseigné') AS tel FROM clients;
-- NULLIF : retourne NULL si les deux valeurs sont égales (évite division par zéro)
SELECT nom, chiffre_affaires / NULLIF(nb_employes, 0) AS ca_par_employe FROM entreprises;

💡 Exemple concret — Segmentation clients

SELECT nom,
  CASE WHEN total_achats > 10000 THEN 'VIP'
       WHEN total_achats > 1000 THEN 'Régulier'
       ELSE 'Occasionnel'
  END AS segment,
  COALESCE(parrain, 'Aucun') AS parraine_par
FROM clients ORDER BY total_achats DESC;
Ceci est un aperçu gratuit.
Voir la formation complète