0Pricing
Coding Interview Prep · Lección

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.5

Precedencia 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; -- 20

Precedencia 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

  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