ConsigneAvec une CTE (WITH), classe les etudiants par note décroissante grâce à une fonction de rang (colonne nommée rang), puis n'affiche que les 3 premiers. Colonnes : nom, note, rang.
Une cte (Common Table Expression) est une requête temporaire nommée, définie avec with avant la requête principale. Elle rend le code lisible.
Syntaxe
WITH nom_cte AS ( SELECT ...)SELECT * FROM nom_cte;L'exemple qui suit se sert d'une fonction fenêtre, `rank() over (order BY ...)`. Le sujet complet est celui de la leçon 31, mais voici de quoi lire la ligne : `over (order BY prix desc)` demande de classer les lignes par prix décroissant, et `rank()` donne à chacune son numéro dans ce classement, sans regrouper ni supprimer de ligne. La colonne `rang` obtenue s'utilise ensuite comme n'importe quelle autre.
Exemple (table produits) :
WITH produits_classes AS ( SELECT nom, prix, RANK() OVER (ORDER BY prix DESC) AS rang FROM produits)SELECT * FROM produits_classes WHERE rang <= 3;-> les produits jusqu'au rang 3, plus lisible qu'une sous-requête imbriquéeAttention : rank() donne le même rang aux ex aequo, donc where rang <= 3 peut ramener plus de trois lignes (deux produits au même prix partagent le rang 3). Si tu en veux exactement trois, remplace rank() par row_number().
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →