-- une plateforme pour apprendre SQL, pas pour le deviner
titrix

l'éditeur où l'on apprend SQL avec PostgreSQL

Huit parcours, une centaine d'exercices, une sandbox PostgreSQL réelle. On écrit la requête, on voit immédiatement si elle est juste — et sinon, pourquoi.

8 parcours De SELECT à PARTITION BY PostgreSQL réel Gratuit

Ce que tu ne trouveras pas ailleurs

Bac à sable PostgreSQL réel

Chaque exercice s'exécute contre une vraie base PostgreSQL. Tu tapes la requête, le résultat apparaît. Aucune simulation, aucune syntaxe simplifiée — ce que tu écris ici fonctionne en production.

Contextes métier, pas des datasets académiques

Les exercices utilisent des tables d'effectifs, de salaires, de contrats et de commandes — les structures que les analystes croisent vraiment, sur de vraies données RH tout au long du cursus.

Un feedback ciblé, pas un chat

Quand ta requête ne retourne pas le bon résultat, tu reçois une analyse écrite de ce qui cloche — l'erreur identifiée, une piste pour avancer, sans la solution toute faite. Pas de conversation : tu corriges, tu retentes.

8 parcours, du SELECT à PARTITION BY

Un cursus complet pour maîtriser PostgreSQL en contexte analytique. Chaque parcours se termine par une énigme ouverte — une enquête sur les données où tu poses toi-même les questions.

Initié SQL
Lire des données — SELECT, filtres, tri, DISTINCT
Filtrer et transformer — LIKE, IN, IS NULL, fonctions texte et date
Analyste Junior
Combiner des tables — INNER JOIN, LEFT JOIN, UNION
Agréger et grouper — COUNT, SUM, AVG, GROUP BY, HAVING
Analyste
Produire des indicateurs — ROUND, COALESCE, CASE WHEN
Analyste Senior
Décomposer les requêtes — Sous-requêtes scalaires et listes, CTE WITH
Analyste Données
Classements et fenêtres — OVER(), PARTITION BY, ROW_NUMBER / RANK
Expert Données
Transformer les données — CAST, fonctions texte, durées, DATE_TRUNC

Un parcours en préparation — SQL pour la BI et la production.

Parcours 7 · Classements et fenêtres · Exercice 15

À quoi ressemble un exercice de niveau 7

La direction veut identifier, pour chaque département, les deux employés les mieux payés parmi ceux gagnant au moins 7 000 CHF.

Requête
WITH classement AS (
  SELECT e.nom, e.salaire, e.dept_id,
         DENSE_RANK() OVER (PARTITION BY e.dept_id
                          ORDER BY e.salaire DESC) AS rang
  FROM employes e
  WHERE e.salaire >= 7000
)
SELECT c.nom, c.salaire, d.nom AS departement
FROM classement c
INNER JOIN departements d ON c.dept_id = d.id
WHERE c.rang <= 2
ORDER BY d.nom, c.salaire DESC
Résultat — 6 lignes
nom salaire departement
Dupont 9 800 CHF Direction
Laurent 7 000 CHF Finance
Petit 7 800 CHF Informatique
Meier 7 400 CHF Informatique
Blanc 7 100 CHF Marketing
Durand 7 200 CHF Ventes
Correct +100 XP

Dès le premier parcours, les exercices te demandent de raisonner sur tes données — pas de recopier une syntaxe.

Démarre maintenant.

8 parcours. Gratuit. En français.