Columnas calculadas y precedencia de expresiones
Aritmética, concatenación y precedencia de operadores dentro de las listas SELECT
Columnas calculadas y precedencia de expresiones es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 2 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.
Columnas calculadas en SELECT
Una columna calculada es una expresión en SELECT que obtiene un valor en lugar de leerlo directamente, como price * quantity. Asígnele siempre un alias claro.
SELECT product,
price,
quantity,
price * quantity AS line_total
FROM order_items;Operadores aritméticos
SQL tiene los operadores matemáticos habituales: +, -, *, /, además del módulo. El tipo del resultado depende de los operandos, y ahí se esconde el siguiente problema.
SELECT 7 + 3 AS sum_val,
7 - 3 AS diff_val,
7 * 3 AS prod_val,
7 % 3 AS remainder;La trampa de la división entera
Tenga cuidado: dividir dos enteros realiza una división entera, por lo que 5 / 2 da 2, no 2.5. Soluciónelo convirtiendo un lado a decimal o multiplicándolo por 1.0.
SELECT 5 / 2 AS int_div, -- 2
5 * 1.0 / 2 AS real_div, -- 2.5
CAST(5 AS DECIMAL) / 2 AS cast_div; -- 2.5Precedencia de operadores
SQL sigue la precedencia matemática habitual: * y / se ejecutan antes que + y -. Por eso, 2 + 3 * 4 es 14, no 20. Los paréntesis tienen prioridad sobre todo lo demás.
SELECT 2 + 3 * 4 AS no_parens, -- 14
(2 + 3) * 4 AS with_parens; -- 20Precedencia en una consulta real de descuentos
Los errores de precedencia son frecuentes en la lógica de negocio. Para calcular un precio con descuento, price - price * rate es correcto porque * se ejecuta primero. Compruebe siempre la agrupación que utiliza realmente el motor.
SELECT price,
discount_rate,
price - price * discount_rate / 100 AS net_price
FROM products;Concatenación de cadenas
La unión de texto depende de la base de datos: || en Postgres y en SQL estándar, + en SQL Server, y CONCAT() en MySQL. CONCAT() es la opción segura y portable.
-- Postgres / standard
SELECT first_name || ' ' || last_name AS full_name
FROM employees;
-- Portable
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;NULL contamina la aritmética
Este punto es importante: cualquier operación matemática con NULL produce NULL. Por eso, base_salary + bonus es NULL para quien no tenga bonus. Envuelva las columnas que puedan dar problemas en COALESCE para proporcionar un valor predeterminado.
SELECT base_salary,
bonus,
base_salary + bonus AS unsafe_total,
base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;La concatenación y NULL según el dialecto
NULL también afecta al texto, y los dialectos difieren: Postgres hace desaparecer toda la cadena, mientras que CONCAT de SQL Server trata NULL como una cadena vacía. Envuelva cada parte en COALESCE para obtener un resultado predecible.
SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;Funciones dentro de expresiones
Las columnas calculadas pueden envolver sin problema funciones como ROUND, ABS o UPPER. Una llamada a una función es simplemente otra expresión, por lo que puede anidarla dentro de sus cálculos.
SELECT product,
ROUND(price * quantity * 1.0, 2) AS line_total,
UPPER(product) AS product_caps
FROM order_items;Conversión implícita de tipos y CAST
Cuando los tipos de los operandos difieren, SQL realiza una conversión implícita que puede sorprenderle. Sea explícito con CAST(expr AS type): los entrevistadores lo interpretan como código cuidadoso y defensivo.
SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;Expresiones booleanas como columnas
Una comparación como price > 100 es una expresión por sí misma. Postgres puede seleccionarla como true/false, pero la opción portable consiste en envolverla en un CASE para producir 1/0 o una etiqueta.
-- Portable
SELECT product,
CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;Comprobación rápida
Evalúe la expresión.
Resumen
Resumen: asigne alias a sus columnas calculadas. Use CAST para la división decimal, tenga en cuenta la precedencia, use CONCAT() para obtener texto portable y recuerde que NULL contamina la aritmética, por lo que debe protegerla con COALESCE.
Preguntas frecuentes
¿La lección «Columnas calculadas y precedencia de expresiones» es gratis?
Sí — el texto completo de «Columnas calculadas y precedencia de expresiones» 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 «Columnas calculadas y precedencia de expresiones»?
Aritmética, concatenación y precedencia de operadores dentro de las listas SELECT 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 2 de 4.
¿Cuánto tiempo toma la lección «Columnas calculadas y precedencia de expresiones»?
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
- Proyección de columnas y problemas con los alias
- Columnas calculadas y precedencia de expresiones
- DISTINCT frente a GROUP BY para obtener valores únicos
- Expresiones CASE en SELECT