CodeGym /Cursos /SQL SELF /Ejemplos de formateo de datos en tareas reales

Ejemplos de formateo de datos en tareas reales

SQL SELF
Nivel 5, Lección 4
Disponible

Uno de los escenarios más populares al trabajar con bases de datos es preparar datos para informes. Imagina la situación: trabajas en una universidad y tu jefe (que, por supuesto, no tiene ni idea de SQL) te pide que crees una lista de estudiantes uniendo el nombre y el apellido, y además que muestres la fecha de nacimiento en el formato DD-MM-YYYY. La tarea está clara: hay que dejar los datos bonitos. Y SQL es nuestro colega fiel para esto.

Ejemplo 1: Unir nombre y apellido

Vamos a empezar uniendo el nombre (first_name) y el apellido (last_name) de los estudiantes de nuestra tabla students.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name
FROM 
    students;

¿Qué pasa aquí?

  • CONCAT() une cadenas de texto. Añadimos un espacio entre el nombre y el apellido para que quede claro.
  • El resultado se guarda en una nueva columna full_name.

El resultado puede verse así:

full_name
Otto Art
Anna Song
Pol Mac

Ejemplo 2: Formatear la fecha

Ahora vamos a añadir el formateo de la fecha de nacimiento a nuestra consulta.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students;

¿Qué hay de nuevo aquí?

  • Usamos la función TO_CHAR() sobre el campo birth_date.
  • El formato 'DD-MM-YYYY' convierte la fecha en algo más cómodo (por ejemplo: 25-12-2001).

El resultado:

full_name formatted_birth_date
Otto Art 12-04-1995
Anna Song 03-08-1996
Pol Mac 21-11-1997

¡Voilà! Acabas de crear un informe bonito.

Formateo para exportar datos

Supón que uno de tus colegas quiere exportar datos de pedidos a un archivo CSV para trabajar luego en Excel. Pero los datos en la base están en un formato incómodo para él, y la gente de ventas exige un formato concreto. Por ejemplo, en vez del campo total_price, donde está el precio del pedido, quieren verlo así: $100.00.

Ejemplo 3: Convertir números a formato moneda

Vamos a preparar los datos de pedidos de la tabla orders para exportar:

SELECT
    order_id,
    TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM 
    orders;

¿Qué hace TO_CHAR() aquí?

  • FM (Fill Mode) quita los espacios de más.
  • $ añade el símbolo de moneda.
  • 999,999.00 pone separadores de miles y dos decimales.

El resultado:

order_id formatted_price
1 $1,000.00
2 $2,500.50
3 $10.00

Ahora tu colega puede importar los datos a Excel fácilmente y presumir de ti en la reunión.

Ejercicio final

Aquí empieza lo más divertido. Vamos a juntar todas las skills que ya tienes.

Enunciado

Crea una consulta para la tabla students que:

  1. Une el nombre y el apellido en una sola columna full_name.
  2. Convierte la fecha de nacimiento al formato DD-MM-YYYY.
  3. Muestra la edad del estudiante a día de hoy.

La consulta sería algo así:

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
    DATE_PART('year', AGE(birth_date)) AS age
FROM 
    students;

Nuevos elementos:

  • AGE(birth_date) devuelve el intervalo entre la fecha actual y la de nacimiento, pero en años, meses y días.
  • DATE_PART('year', AGE(birth_date)) saca solo los años de ese intervalo.

El resultado:

full_name formatted_birth_date age
Otto Art 12-04-1995 28
Anna Song 03-08-1996 27
Pol Mac 21-11-1997 25

Un informe así dejará contentos hasta a los colegas más tiquismiquis.

Formateo para condiciones específicas

A veces hay que formatear datos para crear condiciones o filtrar. Por ejemplo, vamos a sacar los estudiantes que cumplen años este mes.

Ejemplo 4: Filtrar por mes

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
WHERE 
    DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);

¿Cómo funciona esto?

  • DATE_PART('month', birth_date) saca el mes de la fecha de nacimiento.
  • CURRENT_DATE te da la fecha de hoy. Sacamos el mes con DATE_PART().

Juntando formateo y ordenación

Ahora vamos a juntar todo lo aprendido y añadir ordenación. Por ejemplo, creamos una lista de estudiantes ordenados por su fecha de nacimiento.

Ejemplo 5: Ordenar por fecha de nacimiento

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
ORDER BY 
    birth_date ASC;

Ordenar en orden ascendente ASC muestra primero a los estudiantes más mayores, y en descendente DESC a los más jóvenes.

Juntando con valores únicos

Para terminar, un reto con estrella. Imagina que nuestra universidad tiene sucursales en varias ciudades y tienes que crear una lista de ciudades únicas donde estudian los estudiantes, pero en orden alfabético.

Ejemplo 6: Valores únicos y ordenación

SELECT DISTINCT
    city 
FROM 
    students
ORDER BY 
    city ASC;

¿Qué hace DISTINCT?

Elimina los valores duplicados, así que en los resultados cada ciudad aparece solo una vez.

¿Para qué sirve todo esto?

Comodidad y belleza. Cuando los datos están bonitos, es más fácil trabajar con ellos y los jefes preguntan menos.

Preparación para la vida real. Vas a poder generar informes automáticamente, trabajar con exportaciones y preparar presentaciones chulas.

Sube tu valor. SQL no es solo datos. Es hacerlos comprensibles y útiles.

Usa lo que has aprendido para no solo escribir consultas, sino crear auténticas obras de arte. En las próximas lecciones seguiremos profundizando en la magia de PostgreSQL.

2
Tarea
SQL SELF, nivel 5, lección 4
Bloqueada
Unión de columnas y formateo de cadenas
Unión de columnas y formateo de cadenas
2
Tarea
SQL SELF, nivel 5, lección 4
Bloqueada
Formateo de números en formato de moneda
Formateo de números en formato de moneda
1
Cuestionario/control
Formateo de cadenas, nivel 5, lección 4
No disponible
Formateo de cadenas
Formateo de cadenas
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION