0Pricing
Coding Interview Prep · Lección

Proyección de columnas y problemas con los alias

Descubra por qué no puede hacer referencia a un alias de SELECT en WHERE y cómo se evalúa el alcance de los alias en las entrevistas

Proyección de columnas y problemas con los alias es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 1 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.

Proyección: elección de columnas

Elegir qué columnas devuelve una consulta se denomina proyección; eso es lo que hace cada vez que escribe SELECT. En código real, indique las columnas de forma explícita y reserve SELECT * para exploraciones rápidas.

SELECT id, first_name, email
FROM employees;

Por qué a los entrevistadores no les gusta SELECT *

¿Por qué a los entrevistadores no les gusta SELECT * en el código de una aplicación? Es frágil (el orden de las columnas puede cambiar), desperdicia ancho de banda, dificulta el uso de índices y oculta lo que realmente necesita. Indique las columnas. 👍

Asignar un alias a una columna con AS

Un alias cambia el nombre de una columna en la salida. Utilice AS para aportar claridad; resulta especialmente útil en las columnas calculadas, ya que proporciona un encabezado limpio y legible a expresiones poco claras como salary * 12.

SELECT first_name AS name,
       salary * 12 AS annual_salary
FROM employees;

Citar alias que contienen espacios

Si un alias contiene espacios o una palabra reservada, debe ponerlo entre comillas. La forma estándar y portable es utilizar comillas dobles. Consejo: utilice nombres en snake_case y evite por completo las comillas.

SELECT salary AS "Annual Pay"
FROM employees;

La gran trampa: el alcance del alias en WHERE

Esta es la trampa que más se evalúa: define un alias en SELECT, intenta filtrar por él en WHERE y la consulta falla. WHERE se ejecuta antes que SELECT, por lo que ese alias todavía no existe.

-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;

El motivo: el orden lógico de ejecución

La solución consiste en conocer el orden lógico de las cláusulas: FROM, WHERE, GROUP BY, HAVING, SELECT y después ORDER BY. SELECT se ejecuta casi al final, por lo que las cláusulas anteriores no pueden ver sus alias.

Solución 1: repetir la expresión

La solución más portable es sencilla: simplemente repita la expresión en WHERE en lugar del alias. Es un poco más verboso, pero funciona en cualquier base de datos, siempre.

SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;

Solución 2: envolver en una subconsulta o CTE

Si repetir una expresión larga le parece poco elegante, calcúlela primero en una subconsulta o CTE. Allí el alias se convierte en una columna real, por lo que el WHERE externo puede filtrar por ella.

SELECT *
FROM (
  SELECT first_name, salary * 12 AS annual_salary
  FROM employees
) t
WHERE annual_salary > 100000;

Dónde SÍ se permiten alias: ORDER BY

Buenas noticias: ORDER BY puede usar un alias de SELECT porque se ejecuta después de SELECT. Por tanto, WHERE, GROUP BY y HAVING no pueden ver los alias, pero ORDER BY sí.

SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;

Diferencias entre dialectos que conviene mencionar

Conviene mencionarlo: MySQL permite de forma flexible los alias en GROUP BY y HAVING, mientras que Postgres y SQL Server siguen el estándar. Razone según el orden lógico y después indique la excepción.

Alias de tablas frente a alias de columnas

No los confunda. Un alias de tabla acorta el nombre de una tabla y es visible en todas partes, incluso en WHERE. Un alias de columna cambia el nombre de la salida y no es visible allí: justo lo contrario.

SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;

Comprobación rápida

Ponga a prueba el problema central.

Resumen

Resumen: prefiera columnas explícitas en lugar de SELECT * y use alias con AS. Un alias de SELECT no es visible en WHERE/GROUP BY/HAVING, pero funciona en ORDER BY. Soluciónelo repitiendo la expresión o usando una CTE.

Preguntas frecuentes

¿La lección «Proyección de columnas y problemas con los alias» es gratis?

Sí — el texto completo de «Proyección de columnas y problemas con los 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 «Proyección de columnas y problemas con los alias»?

Descubra por qué no puede hacer referencia a un alias de SELECT en WHERE y cómo se evalúa el alcance de los alias en las entrevistas 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 1 de 4.

¿Cuánto tiempo toma la lección «Proyección de columnas y problemas con los 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. Proyección de columnas y problemas con los alias
  2. Columnas calculadas y precedencia de expresiones
  3. DISTINCT frente a GROUP BY para obtener valores únicos
  4. Expresiones CASE en SELECT
← Volver a Coding Interview Prep