0Pricing
Coding Interview Prep · Lección

Ordenar por expresiones y alias

Descubra dónde se permiten referencias a alias en ORDER BY y cómo ordenar por lógica calculada

Ordenar por expresiones y alias es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

ORDER BY es más flexible de lo que cree

Un número sorprendente de candidatos cree que ORDER BY solo puede referenciar columnas simples. En realidad, puede ordenar por expresiones, alias, posiciones de columna y lógica CASE.

Los entrevistadores utilizan esto para comprobar si entiende el orden lógico de ejecución de las consultas, porque ORDER BY se ejecuta después de SELECT, precisamente por lo que los alias funcionan aquí, pero no en WHERE.

Por qué los alias son válidos en ORDER BY

Recuerde el orden lógico de ejecución: FROM, WHERE, GROUP BY, HAVING, SELECT y después ORDER BY. Como SELECT se ejecuta antes que ORDER BY, los alias de columna que definió en SELECT ya existen cuando ORDER BY se evalúa.

Ese es el motivo exacto por el que un alias funciona en ORDER BY, pero falla en WHERE, una cuestión que a los entrevistadores les gusta relacionar con el orden de ejecución.

SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;

Ordenar por una expresión sin alias

También puede repetir la expresión completa en ORDER BY en lugar de usar el alias. Ambas opciones son válidas y el resultado es idéntico.

Usar el alias es más limpio y evita duplicar la lógica, pero algunos equipos prefieren la expresión explícita por claridad. Cualquiera de las dos respuestas es aceptable en una entrevista, siempre que pueda justificarla.

SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;

Ordenar por posición de columna (ordinal)

Puede ordenar por la posición ordinal de un elemento de la lista de selección: ORDER BY 2 ordena por la segunda columna seleccionada. Es conciso, pero frágil, porque reordenar la lista de SELECT cambia el orden de forma silenciosa.

Consejo para entrevistas: sepa que existe y que, por lo general, se desaconseja en código de producción por motivos de legibilidad y seguridad.

SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;

Ordenar por un CASE calculado

Un patrón potente consiste en ordenar mediante una expresión CASE para imponer un orden personalizado que no sea alfabético. Aquí mostramos primero las personas con mayores ingresos mediante una prioridad derivada.

CASE genera una clasificación de ordenación que no corresponde a ninguna columna propia; el motor la evalúa exclusivamente para ordenar.

SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
         salary DESC;

Ordenación categórica personalizada

Las columnas de estado rara vez se ordenan de forma lógica alfabéticamente. «active, pending, closed» se ordena alfabéticamente como «active, closed, pending», lo cual es incorrecto. Un CASE asigna a cada valor una clasificación definida deliberadamente.

Este es un requisito frecuente en informes y una forma clara de demostrar que puede controlar el orden más allá de la ordenación natural.

SELECT id, status
FROM orders
ORDER BY CASE status
           WHEN 'active'  THEN 1
           WHEN 'pending' THEN 2
           WHEN 'closed'  THEN 3
           ELSE 4
         END;

Ordenar por el resultado de una función

Cualquier función escalar funciona en ORDER BY. Por ejemplo, puede ordenar sin distinguir mayúsculas y minúsculas con LOWER, por la longitud de una cadena o por una parte de una fecha.

Nota: envolver una columna en una función durante la ordenación puede impedir que el motor utilice un índice sobre esa columna, igual que ocurre en WHERE.

SELECT name
FROM employees
ORDER BY LOWER(name) ASC;

Alias frente a agregados en consultas con GROUP BY

En una consulta agrupada, a menudo se ordena por un agregado. Puede referenciar el alias del agregado en ORDER BY, de nuevo porque SELECT se ejecuta primero.

La consulta siguiente cuenta los pedidos por cliente y los ordena de forma descendente según ese recuento, utilizando el alias order_count.

SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;

El error de la colisión de nombres de alias

Un caso límite que gusta a los entrevistadores: ¿qué ocurre si el alias tiene el mismo nombre que una columna real? La mayoría de los motores resuelven primero un nombre sin calificar en ORDER BY como el alias de la lista de selección, lo que puede sorprenderle.

Si asigna el alias salary * 2 AS salary y después usa ORDER BY salary, ordenará por el valor duplicado, no por la columna subyacente. Evite reutilizar nombres de columnas como alias para evitar esta ambigüedad.

SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;

Combinar expresiones y direcciones

Puede combinar todos estos elementos en una sola cláusula: primero una expresión, después un alias y luego una columna simple, cada uno con su propia dirección. El ejemplo ordena primero por un nivel de bonificación calculado de forma descendente y después por nombre de forma ascendente como criterio de desempate.

Encadenar claves de esta manera es fundamental en las consultas reales de generación de informes.

SELECT name, salary,
       salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;

Consideraciones de portabilidad

Aunque las expresiones y los alias en ORDER BY son ampliamente compatibles, tenga en cuenta lo siguiente en las entrevistas:

  • Las posiciones ordinales (ORDER BY 2) son estándar, pero se desaconsejan.
  • La visibilidad de los alias en ORDER BY es coherente en los principales motores, a diferencia de lo que ocurre en WHERE/HAVING.
  • SELECT DISTINCT impone una restricción: solo puede usar en ORDER BY expresiones que aparezcan en la lista de selección.

Comprobación rápida

Relacione la visibilidad de los alias con el orden de ejecución.

Resumen

Ordenación mediante expresiones y alias:

  • ORDER BY admite alias, expresiones sin procesar, funciones, lógica con CASE y posiciones ordinales.
  • Los alias funcionan porque ORDER BY se ejecuta después de SELECT en el orden lógico.
  • Utilice CASE para establecer un orden categórico personalizado.
  • Evite nombres de alias que entren en conflicto con columnas reales para prevenir ambigüedades.
  • Las funciones en la clave de ordenación pueden impedir el uso de índices.

Preguntas frecuentes

¿La lección «Ordenar por expresiones y alias» es gratis?

Sí — el texto completo de «Ordenar por expresiones y alias» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Ordenar por expresiones y alias»?

Descubra dónde se permiten referencias a alias en ORDER BY y cómo ordenar por lógica calculada Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Ordenar por expresiones y alias»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Ordenación por varias columnas y posición de NULL
  2. LIMIT, OFFSET y FETCH FIRST
  3. Devolver de forma fiable las filas superiores
  4. Ordenar por expresiones y alias
← Volver a Coding Interview Prep