Ordenar y formatear datos son skills súper importantes que te ayudan a preparar informes legibles, optimizar el análisis de datos y mejorar la experiencia de usuario. Estos conocimientos te van a servir cuando crees informes analíticos, prepares datos para exportar y, en general, en el día a día con bases de datos. En la práctica, te vas a encontrar muchas veces con tareas donde tienes que dejar los datos bonitos, eliminar registros duplicados y ordenar la info para que sea más fácil de entender. ¡Justo eso vamos a hacer hoy!
Ejemplo 1: Crear una lista de clientes únicos uniendo nombre y apellido, ordenada por apellido
Tenemos una tabla customers donde se guardan los datos de los clientes:
| id | first_name | last_name | city |
|---|---|---|---|
| 1 | Alex | Lin | New York |
| 2 | Maria | Chi | Los Angeles |
| 3 | Alex | Lin | New York |
| 4 | Anna | Song | Chicago |
Nuestro objetivo:
- Unir
first_nameylast_nameen una sola columnafull_name. - Sacar solo los clientes únicos.
- Ordenar la lista por apellido (
last_name).
Consulta SQL
SELECT DISTINCT
CONCAT(first_name, ' ', last_name) AS full_name,
city
FROM customers
ORDER BY last_name;
| full_name | city |
|---|---|
| Maria Chi | Los Angeles |
| Alex Lin | New York |
| Anna Song | Chicago |
Fíjate que los registros duplicados de Alex Lin se eliminaron gracias a DISTINCT, y la lista completa está ordenada por apellido en orden alfabético.
Ejemplo 2: Formatear datos de pedidos y ordenarlos
En la tabla orders se guardan los datos de los pedidos:
| order_id | customer_name | order_date | total_amount |
|---|---|---|---|
| 1 | Alex Lin | 2023-10-01 | 1500 |
| 2 | Maria Chi | 2023-10-02 | 2000 |
| 3 | Alex Lin | 2023-10-03 | 1500 |
| 4 | Anna Song | 2023-10-04 | 3000 |
Nuestro objetivo:
- Crear una columna
formatted_order_datedonde la fecha del pedido esté en formato DD-MM-YYYY. - Eliminar registros duplicados de cliente y fecha (dejar solo combinaciones únicas de
customer_nameyorder_date). - Ordenar los pedidos por fecha en orden descendente.
- Consulta SQL
SELECT DISTINCT
customer_name,
TO_CHAR(order_date, 'DD-MM-YYYY') AS formatted_order_date,
total_amount
FROM orders
ORDER BY order_date DESC;
Resultado:
| customer_name | formatted_order_date | total_amount |
|---|---|---|
| Anna Song | 04-10-2023 | 3000 |
| Alex Lin | 03-10-2023 | 1500 |
| Maria Chi | 02-10-2023 | 2000 |
Fíjate cómo con la función TO_CHAR() cambiamos el formato de la fecha a DD-MM-YYYY, y con DISTINCT quitamos los registros duplicados.
Ejemplo 3: Sacar combinaciones únicas "nombre + apellido" de estudiantes y ordenar por apellido y fecha de nacimiento
En la tabla students están los datos de los estudiantes:
| student_id | first_name | last_name | birth_date |
|---|---|---|---|
| 1 | Alex | Lin | 2001-03-15 |
| 2 | Maria | Chi | 2000-06-20 |
| 3 | Alex | Lin | 2001-03-15 |
| 4 | Anna | Song | 1999-10-10 |
Nuestro objetivo:
- Unir nombre y apellido en una sola columna
full_name. - Sacar combinaciones únicas "nombre + apellido".
- Ordenar los estudiantes por apellido y luego por fecha de nacimiento.
SELECT DISTINCT
CONCAT(first_name, ' ', last_name) AS full_name,
birth_date
FROM students
ORDER BY last_name, birth_date;
Resultado:
| full_name | birth_date |
|---|---|
| Maria Chi | 2000-06-20 |
| Alex Lin | 2001-03-15 |
| Anna Song | 1999-10-10 |
Ojo: los dos registros iguales del estudiante "Alex Lin" se juntaron en una sola fila, y el orden es primero por apellido y luego por fecha de nacimiento.
Ejercicio práctico
Usa lo que aprendiste hoy para resolver la siguiente tarea:
Tarea: Tienes una tabla products que contiene estos datos:
| product_id | category | product_name | price |
|---|---|---|---|
| 1 | Electronika | Telefon | 50000 |
| 2 | Odezhda | Kurtka | 8000 |
| 3 | Electronika | Noutbuk | 70000 |
| 4 | Odezhda | Kurtka | 8000 |
- Crea una columna
formatted_productdondeproduct_nameesté unido con la categoría por un guion, por ejemplo:Telefon - Electronika. - Elimina combinaciones duplicadas de
product_nameycategory. - Ordena los productos por categoría y luego por precio (de más barato a más caro).
Abajo tienes la estructura de la consulta para hacer el ejercicio:
SELECT DISTINCT
CONCAT(product_name, ' - ', category) AS formatted_product,
price
FROM products
ORDER BY category, price ASC;
¡Intenta imaginar tú mismo el resultado de esta consulta!
Usar funciones como CONCAT(), DISTINCT y ORDER BY te ayuda a conseguir datos súper legibles y estructurados, algo clave en proyectos y tareas reales. ¡Asegúrate de entender cómo combinarlas practicando con ejemplos!
GO TO FULL VERSION