Volver a la lista de artículos Artículos
Lectura de 7 minutos

Cláusula ORDER BY de SQL con 7 ejemplos

Conozca la cláusula SQL ¡ORDER BY! Nuestros ejemplos prácticos y sencillos le ayudarán a entender su sintaxis, usos comunes y mejores prácticas.

SQL o Lenguaje de Consulta Estructurado le permite "hablar" con una base de datos. Le permite crear, recuperar y manipular los datos de una base de datos relacional. Este lenguaje se ha vuelto tan omnipresente que casi ningún campo relacionado con los datos ha dejado de ser tocado por él.

Si estás interesado en la cláusula ORDER BY de SQL, asumo que ya has empezado a aprender SQL o estás planeando empezar pronto. Esta cláusula se utiliza para clasificar los resultados en un orden determinado. En este artículo, cubriremos algunos ejemplos prácticos para demostrar su uso. Si aún no estás familiarizado con los fundamentos de las consultas SQL, te recomiendo que tomes nuestro SQL para principiantes curso.

Vamos a sumergirnos directamente en la cláusula SQL ORDER BY.

¿Qué es la cláusula SQL ORDER BY?

Como ya hemos dicho, la cláusula SQL ORDER BY se utiliza para organizar los resultados de la consulta en un orden determinado. Supongamos que usted es un profesor universitario y quiere imprimir una lista de los estudiantes inscritos en su clase en orden alfabético. Si tiene esta información almacenada en alguna base de datos, escribiendo una simple consulta obtendrá los resultados.

En mi experiencia, ORDER BY es una de las construcciones SQL más útiles; casi todos los informes y análisis hacen algún uso de ella.

Permíteme que te muestre un ejemplo que explica cómo escribir una consulta sencilla utilizando ORDER BY.

Ejemplo 1: Ordenar por una columna numérica

Imagina que trabajas como director de ventas en una empresa. La base de datos de su empresa almacena los datos de ventas de cada vendedor en la siguiente tabla, llamada sales_performance:

sales_person_idnameterritorytotal_sales_valuejoining_date
2333GregorioBavaria1922021-Sep-2021
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
4134PierreParis2121401-Aug-2020

Supongamos que quiere recuperar esta lista de vendedores. Los quiere listar por su número de identificación en orden ascendente (es decir, de menor a mayor, de la A a la Z, etc.). Su consulta será algo así:

SELECT * 
FROM sales_performance
ORDER BY sales_person_id;

Salida:

sales_person_idnameterritorytotal_sales_valuejoining_date
1113SebastianLondon3243331-Oct-2020
2333GregorioBavaria1922021-Sep-2021
4134PierreParis2121401-Aug-2020
4323AaronLondon32000010-Jan-2018

La consulta funciona devolviendo todos los registros y columnas de la tabla sales_performance y, a continuación, ordena los resultados en función del orden numérico de la columna sales_person_id.

Es importante tener en cuenta que ORDER BY ordena por defecto en orden ascendente; aunque puede utilizar la palabra clave ASC para indicar que desea obtener resultados en orden ascendente, no es necesario incluirla. En un campo con números, el orden ascendente pone primero el número más pequeño, seguido del siguiente más pequeño, y así sucesivamente. El número más grande aparecerá en último lugar.

Ejemplo 2: Ordenar por utilizando una columna de texto

También puede utilizar la misma cláusula para ordenar los valores de la columna en orden alfabético. Por ejemplo, digamos que quiere una lista de vendedores ordenada por los nombres de pila de los mismos. Esta es la consulta:

SELECT * 
FROM sales_performance
ORDER BY name;

Salida:

sales_person_idnameterritorytotal_sales_valuejoining_date
4323AaronLondon32000010-Jan-2018
2333GregorioBavaria1922021-Sep-2021
4134PierreParis2121401-Aug-2020
1113SebastianLondon3243331-Oct-2020

Los registros se ordenan ahora en orden alfabético según name. En orden ascendente, esto significa que los nombres se listan alfabéticamente de la A a la Z.

Ejemplo 3: ORDENAR POR usando una columna de fecha

También puede ordenar los resultados por una columna de fecha como joining_date. En el caso de la columna de fecha, la consulta por defecto devuelve los registros desde la fecha más antigua a la más reciente:

SELECT * 
FROM sales_performance
ORDER BY joining_date;

Salida:

sales_person_idnameterritorytotal_sales_valuejoining_date
4323AaronLondon32000010-Jan-2018
4134PierreParis2121401-Aug-2020
1113SebastianLondon3243331-Oct-2020
2333GregorioBavaria1922021-Sep-2021

Aquí los resultados están ordenados por joining_date, del más antiguo al más reciente.

Ejemplo 4: Ordenación descendente

Hasta ahora, todos los registros se han ordenado en orden ascendente. Sin embargo, puede ordenar los registros en orden descendente - simplemente escriba la palabra clave DESC después del nombre de la columna.

Por ejemplo, digamos que quiere ordenar esta lista por el valor total de las ventas conseguidas por cada vendedor. Quiere ver primero el número más grande (es decir, las ventas más altas), así que tendrá que ordenar en orden descendente. Probemos la siguiente consulta:

SELECT * 
FROM sales_performance
ORDER BY total_sales_value DESC;

Resultado:

sales_person_idnameterritorytotal_sales_valuejoining_date
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
4134PierreParis2121401-Aug-2020
2333GregorioBavaria1922021-Sep-2021

Los resultados se ordenan de forma descendente (10-1) según el valor total de las ventas. También puede hacer esto con valores de texto o de fecha; en este caso, los resultados se ordenarán de la Z a la A (texto) o del más nuevo al más antiguo (fecha).

Las palabras clave DESC o ASC pueden utilizarse según sea necesario. Si se omite la palabra clave, los resultados estarán en orden ascendente.

Ejemplo 5: ORDENAR POR utilizando un número de columna

También puede hacer referencia a una columna utilizando una referencia numérica basada en el orden de las columnas de la tabla. En otras palabras, usaría un número en lugar del nombre de la columna. Vea el siguiente ejemplo para mayor claridad:

SELECT sales_person_id, name 
FROM sales_performance
ORDER BY 2;

Salida:

sales_person_idname
4323Aaron
2333Gregorio
4134Pierre
1113Sebastian

El nombre de la columna es la segunda columna de nuestra tabla. Queremos ordenar los valores devueltos por la consulta por el nombre del representante de ventas, pero en lugar de escribir nombre después de ORDER BY, escribimos 2.

Nota: Este enfoque sólo se recomienda para las consultas interactivas. No se recomienda para escribir scripts, ya que las consultas con números en ORDER BY son difíciles de manejar.

Ejemplo 6: Ordenar varias columnas

Al escribir consultas reales, sus requerimientos raramente son tan simples como los ejemplos que hemos utilizado; puede que tenga que ordenar sus valores basándose en múltiples columnas.

La cláusula ORDER BY le permite hacerlo especificando una lista de columnas; sólo tiene que separar los nombres de las columnas con comas. Puede utilizar las palabras clave ASC o DESC (si lo desea) con cada columna para ordenar esa columna en orden ascendente o descendente.

Digamos que necesita mostrar los registros de la tabla en orden decreciente de territory y luego por nombre de vendedor. Su consulta será algo así

SELECT * 
FROM sales_performance
ORDER BY territory DESC, name ASC;

Resultado:

sales_person_idnameterritorytotal_sales_valuejoining_date
4134PierreParis2121401-Aug-2020
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
2333GregorioBavaria1922021-Sep-2021

Observará en la salida que la columna territory está dispuesta en orden alfabético inverso (es decir, descendente). Para el territorio de Londres, los registros se muestran en orden alfabético por nombre.

Ejemplo 7: Uso de ORDER BY con expresiones

También puede ordenar por algo más que los nombres de las columnas; SQL le permite utilizar expresiones al ordenar valores. Por ejemplo, digamos que quiere ordenar concatenando territory y name en orden ascendente. Esta es la consulta:

SELECT *
FROM sales_performance
ORDER BY CONCAT(territory, name);

Salida:

sales_person_idnameterritorytotal_sales_valuejoining_date
2333GregorioBavaria1922021-Sep-2021
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
4134PierreParis2121401-Aug-2020

Aquí los registros se ordenan por una concatenación de territory y name. Así que Bavaria y Gregorio pasan a ser los primeros en orden alfabético y Paris Pierre es el último.

Puede utilizar CASE en ORDER BY para producir ordenaciones realmente precisas.

¿Quieres practicar el uso de ORDER BY en SQL?

Espero que estos ejemplos hayan demostrado claramente el uso de la cláusula ORDER BY. Ordenar los datos es una necesidad clave en la mayoría de las vistas e informes, lo que hace que sea importante dominar el uso de ORDER BY. ¡Y la clave para llegar a ser bueno escribiendo consultas es la práctica!

Cuantas más consultas escriba para diferentes casos de uso, más intuitiva será la escritura de consultas. Si está buscando algunos ejercicios de práctica de SQL impresionantes, eche un vistazo a nuestro Ejercicios prácticos de SQL. Ofrece 88 ejercicios interactivos que van desde los más sencillos hasta los más avanzados.

Y si lo que busca es una experiencia de aprendizaje completa, nuestro Curso completo de SQL es para usted. Ofrece 7 cursos interactivos y te pondrá en el camino de las habilidades SQL de nivel profesional. También puedes consultar este artículo sobre las distintas formas de aprender SQL.

Le deseamos lo mejor y un feliz aprendizaje.