Leccion 8 - Ordenar datos con ORDER BY
Tiempo estimado de lectura: 2 minutos
Muchas veces ocurre que necesitamos podemos tener los datos organizados para facilitar el analisis del resultado de una consulta. Por ejemplo basandonos en nuestra tabla de ejemplo Empleados, podemos querer obtener los resultados de hacer una consulta sobre la tabla de manera que podamos ver el listado de empleados ordenados alfabeticamente por Nombre y Apellidos, o quizas incluso obtener los resultados ordenados por fecha de ingreso en la empresa. Esto puede ser util a la hora de analizar datos o simplemente como un reporte como entregable para alguien que vaya a trabajar con estos datos tras solicitarnoslo a nosotros.
Uso de ORDER BY
Ordenar datos con SQL es muy sencillo. Tan solo debemos utilizar el clause (comando) ORDER BY en la ultima parte de nuestra consulta SELECT e indicar los campos separados por comas por los que queremos obtener el ordenamiento del dataset resultado.
Por ejemplo, teniendo nuestra tabla de ejemplo Empleados que hemos visto anteriormente, queremos ver los datos ordenados por Nombre de los empleados, de esta manera escribiremos y lanzaremos la siguiente consulta.
SELECT *
FROM Empleados
ORDER BY Nombre
Por defecto el ordenamiento de los campos utilizados, si no indicamos lo contrario, se realiza de manera ascendente, esto es alfabeticamente de A a Z en caso de cadenas, y de menor a mayor en caso de datos numericos y de fecha.
Tambien podriamos haber escrito la consulta anterior indicando el orden que queremos como a continuacion.
SELECT *
FROM Empleados
ORDER BY Nombre ASC
La palabra clave tras el campo Nombre indica ordenamiento del campo de manera ascendente, en este caso, el ordenamiento es alfabeticamente de A a Z.
Si por el contrario quisieramos ordenar de Z a A, es decir, de manera descendente, tendremos que utilizar la palabra clave DESC. Por ejemplo, si en vez de ordenar alfabeticamente nuestra tabla Empleados por el campo Nombre lo quisieramos hacer de manera descendente, debemos escribir la siguiente consulta.
SELECT *
FROM Empleados
ORDER BY Nombre DESC
Facil verdad?
Y que ocurre si queremos poder ordenar utilizando dos o mas campos, es sencillo, tan solo deberemos añadir el campo por el que tambien queremos ordenar indicando si el orden que queremos es ascendente o descente. Por ejemplo, ahora queremos ordenar la tabla empleados por Nombre y Apellido, ambas de manera ascendente, para ello escribiremos la siguiente consulta.
SELECT *
FROM Empleados
ORDER BY Nombre, Apellido
En este caso el dataset resultado aparece ordenado primero por la columna Nombre y asi mismo por apellido.
Si quisieramos ordenar primero por Apellido y luego por nombre, entonces tenemos primero que incluir en el ORDER BY el campo Apellido y despues separado por una coma el campo Nombre.
SELECT *
FROM Empleados
ORDER BY Apellido, Nombre