Trier avec des expressions et des alias
Savoir où les références aux alias sont autorisées dans ORDER BY et comment trier selon une logique calculée
Trier avec des expressions et des alias est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Coding Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Coding Interview Prep comprend 4 leçons au total.
ORDER BY est plus flexible que vous ne le pensez
Un nombre étonnant de candidats pensent que ORDER BY ne peut référencer que des colonnes simples. En réalité, vous pouvez trier selon des expressions, des alias, des positions de colonne et une logique CASE.
Les intervieweurs s'en servent pour vérifier que vous comprenez l'ordre logique d'exécution d'une requête, car ORDER BY s'exécute après SELECT, ce qui explique précisément pourquoi les alias fonctionnent ici, mais pas dans WHERE.
Pourquoi les alias sont autorisés dans ORDER BY
Rappelez-vous l'ordre logique d'exécution : FROM, WHERE, GROUP BY, HAVING, SELECT, puis ORDER BY. Comme SELECT s'exécute avant ORDER BY, les alias de colonnes que vous avez définis dans SELECT existent déjà lorsque ORDER BY est évalué.
C'est la raison précise pour laquelle un alias fonctionne dans ORDER BY, mais échoue dans WHERE : les intervieweurs aiment relier cette question à l'ordre d'exécution.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;Trier selon une expression brute
Vous pouvez également répéter l'expression complète dans ORDER BY au lieu d'utiliser l'alias. Les deux solutions sont valides et produisent un résultat identique.
Utiliser l'alias est plus clair et évite de dupliquer la logique, mais certaines équipes préfèrent l'expression explicite pour faciliter la lecture. Les deux réponses sont acceptables en entretien, à condition de pouvoir justifier votre choix.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;Trier selon la position de colonne (ordinal)
Vous pouvez trier selon la position ordinale d'un élément de la liste de sélection : ORDER BY 2 trie selon la deuxième colonne sélectionnée. Cette écriture est concise, mais fragile, car réorganiser la liste SELECT modifie silencieusement le tri.
Conseil pour l'entretien : sachez que cette possibilité existe et qu'elle est généralement déconseillée dans le code de production pour des raisons de lisibilité et de sécurité.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;Trier selon un CASE calculé
Une technique puissante consiste à trier selon une expression CASE afin d'imposer un ordre personnalisé et non alphabétique. Ici, nous plaçons d'abord les personnes aux revenus élevés en utilisant une priorité calculée.
Le CASE produit un rang de tri qui ne correspond à aucune colonne propre ; le moteur l'évalue uniquement pour établir l'ordre.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;Ordre catégoriel personnalisé
Les colonnes d'état se trient rarement de manière pertinente par ordre alphabétique. « actif, en attente, fermé » devient « actif, fermé, en attente » par ordre alphabétique, ce qui est incorrect. Un CASE associe chaque valeur à un rang choisi délibérément.
Il s'agit d'une exigence fréquente pour les rapports et d'une manière claire de montrer que vous savez contrôler l'ordre au-delà du tri naturel.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;Trier selon le résultat d'une fonction
Toute fonction scalaire peut être utilisée dans ORDER BY. Par exemple, triez sans tenir compte de la casse avec LOWER, selon la longueur d'une chaîne ou selon une composante de date.
Remarque : englober une colonne dans une fonction lors du tri peut empêcher le moteur d'utiliser un index sur cette colonne, comme dans WHERE.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;Alias et agrégats dans les requêtes GROUP BY
Dans une requête avec regroupement, vous triez souvent selon un agrégat. Vous pouvez faire référence à l'alias de l'agrégat dans ORDER BY, là encore parce que SELECT s'exécute en premier.
La requête ci-dessous compte les commandes par client et trie ce compte par ordre décroissant en utilisant l'alias order_count.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;Le piège du conflit de noms d'alias
Un cas limite apprécié des intervieweurs : que se passe-t-il si votre alias porte le même nom qu'une colonne réelle ? La plupart des moteurs résolvent d'abord un nom nu dans ORDER BY en faveur de l'alias de la liste SELECT, ce qui peut surprendre.
Si vous définissez salary * 2 AS salary comme alias, puis utilisez ORDER BY salary, vous triez selon la valeur doublée et non selon la colonne sous-jacente. Évitez de réutiliser des noms de colonnes comme alias afin d'écarter cette ambiguïté.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;Combiner expressions et directions de tri
Vous pouvez combiner tous ces éléments dans une seule clause : une expression, puis un alias, puis une colonne simple, chacun avec sa propre direction. L'exemple trie d'abord selon une catégorie de bonus calculée par ordre décroissant, puis selon le nom par ordre croissant comme critère de départage.
Superposer ainsi plusieurs clés constitue la base des requêtes de rapports réelles.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;Limites de portabilité
Bien que les expressions et les alias dans ORDER BY soient largement pris en charge, voici quelques remarques utiles pour les entretiens :
- Les positions ordinales (
ORDER BY 2) sont standard, mais déconseillées. - La visibilité des alias dans
ORDER BYest cohérente entre les principaux moteurs, contrairement àWHERE/HAVING. SELECT DISTINCTimpose une restriction : vous ne pouvez utiliserORDER BYque sur des expressions présentes dans la liste de sélection.
Vérification rapide
Reliez la visibilité des alias à l’ordre d’exécution.
Récapitulatif
Tri selon des expressions et des alias :
ORDER BYaccepte les alias, les expressions brutes, les fonctions, la logiqueCASEet les positions ordinales.- Les alias fonctionnent parce que
ORDER BYs’exécute aprèsSELECTdans l’ordre logique. - Utilisez
CASEpour définir un ordre catégoriel personnalisé. - Évitez les noms d’alias qui entrent en conflit avec de vraies colonnes afin d’éviter toute ambiguïté.
- Les fonctions utilisées comme clé de tri peuvent empêcher l’utilisation des index.
Questions Fréquemment Posées
La leçon « Trier avec des expressions et des alias » est-elle gratuite ?
Oui — le texte complet de « Trier avec des expressions et des alias » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Coding Interview Prep, passe à CoddyKit PRO. Le cours Coding Interview Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Trier avec des expressions et des alias » ?
Savoir où les références aux alias sont autorisées dans ORDER BY et comment trier selon une logique calculée Tu pratiques Coding Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Coding Interview Prep ?
Aucune expérience préalable n'est requise. Coding Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Trier avec des expressions et des alias » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Coding Interview Prep ?
Oui. Chaque leçon Coding Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Tri sur plusieurs colonnes et positionnement des NULL
- LIMIT, OFFSET et FETCH FIRST
- Renvoyer de manière fiable les N premières lignes
- Trier avec des expressions et des alias