🙏 Realmente necesitamos su apoyo. Necesitamos financiamiento para continuar nuestra misión: publicar nuevas lecciones y mejorar la plataforma. Si puede, por favor apoye el proyecto con una donación. Ayude al proyecto ahora →
Código SQL copiado al portapapeles

Lección 2.5: Ordenando Resultados

Por defecto, las filas en una tabla de base de datos o en el conjunto de resultados de una consulta no están garantizadas en ningún orden específico. Para organizar las filas de salida en una secuencia significativa, utilizamos la cláusula ORDER BY.

La Cláusula ORDER BY

La cláusula ORDER BY se agrega al final de una declaración SELECT para ordenar el conjunto de resultados basado en una o más columnas.

Sintaxis

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • column1, column2, ...: Las columnas por las que deseas ordenar.
  • ASC: Ordena los datos en orden ascendente (de menor a mayor, A a Z). Este es el valor predeterminado.
  • DESC: Ordena los datos en orden descendente (de mayor a menor, Z a A).

Ordenando por una Sola Columna

Para ordenar por una columna, simplemente especifica su nombre después de la palabra clave ORDER BY.

Ejemplo: Ordenando Actores por Apellido

Esta consulta recupera todos los actores y los ordena alfabéticamente por su apellido.

SELECT first_name, last_name
FROM actor
ORDER BY last_name;

Si deseas ordenarlos en orden alfabético inverso:

SELECT first_name, last_name
FROM actor
ORDER BY last_name DESC;

Ordenando por Múltiples Columnas

Puedes ordenar por múltiples columnas listándolas separadas por comas. La base de datos primero ordena por la primera columna, y si hay valores duplicados en esa columna, ordena esos duplicados por la segunda columna, y así sucesivamente.

Ejemplo: Ordenando por Apellido, luego por Nombre

Esto es útil cuando varios actores comparten el mismo apellido.

SELECT first_name, last_name
FROM actor
ORDER BY last_name, first_name; -- Primero por last_name, luego por first_name en caso de empate

Ordenando por Expresiones

Puedes ordenar no solo por columnas en bruto, sino también por expresiones. SQL primero evalúa la expresión para cada fila (por ejemplo, un resultado numérico, de texto o booleano), y luego ORDER BY ordena las filas utilizando esos resultados evaluados como clave de ordenación.

Ejemplo 1: Ordenando por una Expresión Numérica

Ordena películas por duración de alquiler en semanas (rental_duration / 7):

SELECT title, rental_duration
FROM film
ORDER BY rental_duration / 7 DESC;

Ejemplo 2: Ordenando por una Expresión de Texto

Ordena actores sin distinguir entre mayúsculas y minúsculas por nombre completo:

SELECT first_name, last_name
FROM actor
ORDER BY LOWER(first_name || ' ' || last_name);

Ejemplo 3: Ordenando por una Expresión Booleana

Coloca las películas con calificación 'G' primero:

SELECT title, rating
FROM film
ORDER BY (rating = 'G') DESC, title;

La ordenación booleana puede diferir entre dialectos de SQL. Para un comportamiento completamente portátil, utiliza CASE:

SELECT title, rating
FROM film
ORDER BY CASE WHEN rating = 'G' THEN 0 ELSE 1 END, title;

Ordenando por Alias de Columna o Posiciones

En la mayoría de los dialectos de SQL, también puedes ordenar por el alias de una columna o su posición numérica en la lista SELECT.

Ejemplo: Ordenando por Alias

SELECT first_name || ' ' || last_name AS full_name
FROM actor
ORDER BY full_name;

Ejemplo: Ordenando por Posición

-- Ordena por la segunda columna (last_name)
SELECT first_name, last_name
FROM actor
ORDER BY 2;

Conclusiones Clave de esta Lección:

  • Utiliza ORDER BY para ordenar las filas en tu conjunto de resultados.
  • ASC (predeterminado) ordena en orden ascendente; DESC ordena en orden descendente.
  • Puedes ordenar por múltiples columnas para refinar aún más el orden.
  • Puedes ordenar por expresiones que devuelven resultados numéricos, de texto o booleanos.
  • La ordenación también se puede realizar utilizando alias de columna o posiciones numéricas.

En la próxima lección, aprenderemos sobre Funciones Agregadas, que nos permiten realizar cálculos sobre conjuntos de datos.