SQL ORDER BY: Ordena resultado en consulta

La cláusula SQL ORDER BY en el lenguaje de consulta estructurado (SQL) se usa para organizar el conjunto de resultados obtenido por una consulta SELECT en forma ascendente o descendente de acuerdo con una o más columnas. Una vez que haya escrito una consulta, naturalmente querrá reordenar los resultados. 

Sintaxis de  SQL ORDER BY

Para ordenar los resultados de una consulta, utilice la cláusula SQL ORDER BY. Se utiliza después de la cláusula FROM y es donde se especifican las columnas o la expresión que se utilizarán para ordenar los datos.

La forma general del comando es:

SELECT column1, column2, column3 
FROM table1
ORDER BY column1, column4

Ejemplo de la clausula order by

Entonces, si quisieras ordenar a las personas por ciudad, podrías indicar

SELECT ID, Nombre, Apellido,
Correoelectrónico, AddressLine,
Ciudad, Cargo
FROM Empleado
order by Ciudad

sql order By

Además, puede especificar la dirección a ordenar. A menos que se especifique, todos los tipos están en orden ascendente (de menor a mayor) y se pueden especificar explícitamente utilizando la palabra clave ASC

SELECT ID,Nombre,Apellido,Correoelectrónico,
AddressLine,Ciudad,Cargo
FROM Empleado order by Ciudad Asc

SQL ORDER BY POR DOS COLUMNAS

También puede ordenar por más de una columna. Simplemente separe las columnas que desea ordenar con una coma. Si querías ordenar Persona por Apellido y Nombre.

SELECT ID,
Nombre,
Apellido,
Correoelectrónico,
AddressLine,
Ciudad,
Cargo 
FROM Empleado 
order by Ciudad,cargo

Los resultados se ordenan en orden ascendente (de la A a la Z). Además, al especificar dos o más columnas de ordenación, los valores de la segunda columna se ordenan dentro de la primera.

SQL ORDER BY descendente (DESC)

Utilice la palabra clave DESC dentro de la cláusula SQL order by para lograr ordenar el resultado SQL de forma descendente. Hacerlo es fácil. Simplemente agregue DESC, la palabra clave SQL DESC especifica un orden descendente para una columna dentro de la cláusula SQL ORDER BY. Los valores se ordenan en orden Z a A.

La siguiente instrucción ordena el campo ciudad en orden descendente. Dado que la anotación se especifica para Cargo, se ordenan en orden ascendente dentro de Ciudad.

SELECT ID, Nombre, Apellido,
Correoelectrónico, AddressLine, Ciudad,Cargo 
FROM Empleado order by Ciudad desc, cargo

Tenga en cuenta que el orden de clasificación de la cláusula orden by de forma predeterminada es ascendente.

Observe cómo agregué la palabra clave ASC a la columna Cargo. La palabra clave SQL ASC especifica un criterio de ordenación ascendente para una columna dentro de la cláusula ORDER BY. Esto significa que los valores se ordenan en orden de la A a la Z.

SELECT ID,Nombre,Apellido,
Correoelectrónico,AddressLine,Ciudad,Cargo 
FROM Empleado order by Ciudad desc, cargo asc

Agregue desc a ambas columnas para ordenar ambas en orden descendente. Al hacerlo, evita que la columna se ordene en orden ascendente, que como sabes es el valor predeterminado:

SELECT ID,Nombre,Apellido,
Correoelectrónico,AddressLine,
Ciudad,Cargo 
FROM Empleado 
order by Ciudad desc, cargo desc  

SQL ORDER BY: EXPRESIÓN DE CALCULO

Hasta ahora has aprendido a ordenar en una o más columnas, pero ¿sabías que puedes ordenar en una expresión?

Por ejemplo, considere OrderDetail, tal vez le gustaría saber quién tiene los pedidos más grandes. Por supuesto, puede ordenar por Cantidad o UnitPricio, pero ¿qué pasa con TotalPricio? ¿Podemos ordenar esto?

Echa un vistazo a lo siguiente, y mira de cerca la cláusula sql ORDER BY, allí verás dónde está ordenado por TotalPricio (UnitPricio * Cantidad)

SELECT   OrderID,
         UnitPricio,
         Cantidad
FROM pedido
ORDER BY UnitPricio * Cantidad

Para que quede más claro, también mostremos el TotalPricio, que conduce a la segunda vía:

SELECT  OrderID,
         UnitPricio,
        Cantidad,
         UnitPricio * Cantidad AS TotalPricio
FROM     Pedido.OrderDetail
ORDER BY UnitPricio * Cantidad

Y aquí es donde el alia, o el cambio de nombre de los campos, puede ayudar. Aquí UnitPricio * Cantidad se alias como TotalPricio en la cláusula SELECT. Ahora que está hecho, simplemente podemos referirnos a TotalPricio al especificar el orden de clasificación.

SELECT  OrderID,
         UnitPricio,
         Cantidad,
         UnitPrice * Cantidad AS TotalPrice
FROM Pedido.OrderDetail
ORDER BY TotalPrice

Es posible que se pregunte por qué querría ordenar en el cálculo cuando solo puedo agregar una columna a mi SELECT y ordenar en eso.

Mi respuesta es que es posible que desee ordenar en un elemento que no necesita mostrar. En este caso, SQL es flexible. Le permite ordenar por valor que no está dentro de su resultado.

Obtenga los mejores resultados

El último elemento que me gustaría repasar con usted es poder limitar el número de resultados ordenados devueltos de una lista. Esto hace que sea muy fácil devolver los «primeros diez» o «diez primeros» elementos en una búsqueda.

Por ejemplo, si desea conocer los cinco elementos principales de OrderDetail, puede ingresar la siguiente consulta en SSMS

SELECT TOP 5 OrderID,
               UnitPricio,
             Cantidad,
               UnitPricio * Cantidad AS TotalPricio
FROM Pedido.OrderDetail
ORDER BY TotalPricio

La palabra clave TOP limita nuestra búsqueda a las primeras cinco filas. Puede limitar por otros números, por supuesto, de hecho, también puede limitar por cualquier número resultante de una expresión.

¡Propina! Para obtener las últimas cinco filas de un resultado, como los cinco pedidos más pequeños, simplemente ordene su resultado en orden descendente.

Deja un comentario