CodeGym /Cursos /SQL SELF /Ejemplos de trabajar con NULL en tareas reales: cálculos,...

Ejemplos de trabajar con NULL en tareas reales: cálculos, filtrado, ordenación

SQL SELF
Nivel 10, Lección 3
Disponible

Trabajar con NULL aparece en un montón de situaciones: desde manejar datos ausentes en informes hasta filtrar y ordenar. Si tuvieras que elegir entre no tener un valor en la tabla o poner un número raro tipo 9999, la mayoría elegiría NULL — sí, no es lo más cómodo, pero al menos es honesto. Vamos a ver algunos casos típicos.

Ejemplo: ordenar productos con precios ausentes

Imagina que gestionamos una tienda online y tenemos una tabla de productos:

product_id name price
1 Teléfono 45000
2 Portátil NULL
3 Cámara 25000
4 Reloj inteligente NULL

Queremos ordenar los productos por precio, y los productos sin precio (NULL) deben ir al final.

SELECT product_id, name, price
FROM products
ORDER BY price ASC NULLS LAST;

Resultado:

product_id name price
3 Cámara 25000
1 Teléfono 45000
2 Portátil NULL
4 Reloj inteligente NULL

Fíjate en la construcción clave NULLS LAST. Por defecto, PostgreSQL para ASC pone los valores NULL al principio, pero con este parámetro los mandamos al final.

Ejemplo: filtrar estudiantes sin fecha de nacimiento

Tenemos una tabla de estudiantes y queremos seleccionar solo aquellos que no tienen fecha de nacimiento indicada.

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

Consulta:

SELECT student_id, name
FROM students
WHERE birth_date IS NULL;

Resultado:

student_id name
2 Anna Song
4 Maria Chi

Hemos sacado la info de los estudiantes cuya fecha de nacimiento es desconocida.

Ejemplos de uso de funciones para manejar NULL

Ejemplo: calcular el total teniendo en cuenta posibles NULL

En la tabla de pedidos se guardan los importes de los pedidos. Pero los datos no siempre están completos, así que tenemos que tener en cuenta que en esos casos el importe puede ser 0.

Ejemplo de datos:

order_id customer_name order_amount
1 Alex 1200
2 Maria 2500
3 Max NULL
4 Xena 3100

Consulta:

SELECT SUM(COALESCE(order_amount, 0)) AS total_amount
FROM orders;

Resultado:

total_amount
6800

Usamos COALESCE(order_amount, 0) para reemplazar NULL por 0 antes de sumar. Así evitamos errores o cálculos incorrectos.

Ejemplo: mostrar texto en vez de NULL

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

En el informe hay que mostrar el texto "No especificado" para todos los datos vacíos en vez de NULL.

SELECT
    customer_name, 
    COALESCE(order_amount::TEXT, 'No especificado') AS order_status
FROM orders;

Resultado:

customer_name order_status
Alex 1200
Maria 2500
Max No especificado
Xena 3100

COALESCE() te deja mostrar el texto que quieras si el valor es NULL.

Escenarios más complejos con NULL

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

La tarea es ordenar los pedidos de forma que los pedidos con importe ausente estén al principio, y luego por orden descendente del importe, de mayor a menor.

SELECT customer_name, order_amount
FROM orders
ORDER BY order_amount DESC NULLS FIRST;

Resultado:

customer_name order_amount
Max NULL
Xena 3100
Maria 2500
Alex 1200

Aquí usamos NULLS FIRST para poner los valores NULL antes que los demás.

Ejemplo: filtrar datos reemplazando valores NULL

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

En algunos informes hay que mostrar solo las filas donde el valor está presente o reemplazarlo por "Desconocido" si es NULL.

SELECT
    student_id, 
    name, 
    COALESCE(birth_date::TEXT, 'Desconocido') AS birth_date_info
FROM students;

Resultado:

student_id name birth_date_info
1 Otto Art 2000-01-15
2 Anna Song Desconocido
3 Alex Lin 1999-05-10
4 Maria Chi Desconocido

Esto es especialmente útil en informes donde es importante mostrar que faltan datos.

Recomendaciones prácticas

Trabajar con NULL requiere estar atento. Aquí tienes algunos consejos útiles:

  • Usa IS NULL y COALESCE() para comprobar y reemplazar valores ausentes.
  • Recuerda que las funciones de agregación ignoran NULL, excepto COUNT(*).
  • Para ordenar, acuérdate de las palabras clave NULLS FIRST y NULLS LAST.
  • En los informes, deja claro cómo manejas NULL para evitar malentendidos con tus compis.

Estos conocimientos te ayudarán no solo a escribir consultas correctas, sino también a impresionar en una entrevista. ¡Saber trabajar con datos reales siempre vale más que solo la teoría!

2
Tarea
SQL SELF, nivel 10, lección 3
Bloqueada
Filtrado de filas con valores NULL
Filtrado de filas con valores NULL
2
Tarea
SQL SELF, nivel 10, lección 3
Bloqueada
Cálculo del importe total con manejo de NULL
Cálculo del importe total con manejo de NULL
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION