CodeGym /Cursos /SQL SELF /Ordenación de datos (ORDER BY): orden ascendente y descen...

Ordenación de datos (ORDER BY): orden ascendente y descendente (ASC, DESC)

SQL SELF
Nivel 2 , Lección 3
Disponible

Cuando trabajas con bases de datos, muchas veces necesitas ver los datos en cierto orden. Por ejemplo:

  • "Muéstrame el top-10 de los productos más caros."
  • "¿Cuáles pedidos fueron los últimos?"
  • "¿Cuál es la edad de los alumnos, empezando por los más jóvenes?"

Es totalmente natural querer tener los datos ordenados: incluso si eres un programador super pro, lidiar con un montón de filas caóticas no es lo más divertido. Por eso SQL nos da una herramienta para ordenar las filas en el resultado — el operador ORDER BY.

Bases de la ordenación con ORDER BY

ORDER BY es como una varita mágica que te deja ordenar las filas en el conjunto de resultados. Sin él, los datos se devuelven en un orden "aleatorio" (no es un bug de la base de datos, simplemente el orden no está garantizado).

Así se ve la sintaxis de ORDER BY:

SELECT columna1, columna2
FROM tabla
ORDER BY columna1 DESC;
  • columna1: el nombre de la columna por la que quieres ordenar.
  • ASC: orden ascendente (es el valor por defecto, así que puedes omitirlo).
  • DESC: orden descendente.

Ejemplo

Supón que tenemos una tabla students:

id name age
1 Alex 22
2 Maria 19
3 Otto 21

Vamos a ordenar los estudiantes por edad (de menor a mayor):

SELECT name, age
FROM students
ORDER BY age ASC;

Resultado:

name age
Maria 19
Otto 21
Alex 22

Si cambias la dirección de la ordenación a descendente:

SELECT name, age
FROM students
ORDER BY age DESC;

El resultado será así:

name age
Alex 22
Otto 21
Maria 19

Ordenar por varias columnas

A veces una sola columna no es suficiente para ordenar. Imagina que hay varios estudiantes con la misma edad y quieres añadir un orden extra, por ejemplo, por nombre.

Ordenar por varias columnas:

SELECT columna1, columna2
FROM tabla
ORDER BY columna1 DESC, columna2 ASC;

Vamos con un ejemplo para la siguiente tabla:

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Consulta:

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Resultado:

name age
Anna 19
Maria 19
Otto 21
Alex 22

Aquí primero se ordena por edad (ascendente), y dentro de cada edad — por nombre en orden alfabético.

Ordenar usando alias

Si usas alias para las columnas, también puedes ordenar por esos alias.

SELECT name AS "Nombre", age AS "Edad"
FROM students
ORDER BY "Edad" DESC;

Resultado:

Nombre Edad
Alex 22
Otto 21
Maria 19

¿Por qué es importante? Porque antes esto no existía y era complicado ordenar por columnas calculadas.

Ordenar usando columnas calculadas

SQL te deja hacer cálculos directamente en la consulta, y luego ordenar por los resultados de esos cálculos.

Ejemplo 1. Un cálculo sencillo

SELECT name, age, age * 2 AS edad_duplicada
FROM students
ORDER BY edad_duplicada DESC;

Resultado:

name age edad_duplicada
Alex 22 44
Otto 21 42
Maria 19 38

Ejemplo 2. Usando funciones. Supón que guardamos los precios de productos en la tabla products:

product_name price
Producto A 100
Producto B 200
Producto C 150

Ahora ordenamos por el precio redondeado, multiplicado por 0.9 (por ejemplo, con descuento). La función ROUND devuelve el número redondeado al decimal que quieras.

SELECT product_name, price, ROUND(price * 0.9, 1) AS precio_descuento
FROM products
ORDER BY precio_descuento ASC;

Así queda el resultado:

product_name price precio_descuento
Producto A 100 90
Producto C 150 135
Producto B 200 180

Aplicaciones prácticas de la ordenación

Ordenar es clave en estos casos:

  • Crear reportes, por ejemplo, el top-10 de ventas del mes.
  • Mostrar datos en interfaces de usuario, como una lista de pedidos ordenados por fecha.
  • Generar listas para análisis, por ejemplo, separar grupos por prioridad.

Errores típicos al usar ORDER BY

Los errores pueden aparecer en cualquier momento. Aquí tienes algunos puntos a tener en cuenta:

  • Si intentas ordenar por una columna que no existe, te saldrá un error: column "not_a_column" does not exist.
  • Ordenar por un alias usado en una columna calculada puede ser confuso si el alias está definido en un nivel superior.
  • Si olvidas poner la dirección de ordenación, PostgreSQL usará ASC por defecto. No es un error, pero puede dar resultados inesperados.

Ahora ya sabes cómo controlar la ordenación en PostgreSQL usando ORDER BY. Recuerda: tener los datos bien organizados es la mitad del éxito al crear consultas SQL eficientes. ¡Vamos a la siguiente lección! 😉

1
Cuestionario/control
Introducción a SQL, nivel 2, lección 3
No disponible
Introducción a SQL
Introducción a SQL
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION