SQL ORDER BY

La cláusula ORDER BY se utiliza en una sentencia SELECT para ordenar los resultados, ya sea en orden ascendente o descendente. Oracle ordena los resultados de la consulta en orden ascendente por defecto.

Sintaxis para utilizar SQL ORDER BY para ordenar los datos es:

SELECT column-list
FROM table_name [WHERE condition]
[ORDER BY column1 [, column2, .. columnN] [DESC]];

tabla de base de "empleado";

id name dept age salary location
100 Ramesh Electrical 24 25000 Bangalore
101 Hrithik Electronics 28 35000 Bangalore
102 Harsha Aeronautics 28 35000 Mysore
103 Soumya Electronics 22 20000 Bangalore
104 Priya InfoTech 25 30000 Mangalore

Por ejemplo: Si desea ordenar la tabla de empleados por salario del empleado, la consulta SQL sería.

SELECT name, salary FROM employee ORDER BY salary;

La salida sería como

name salary
---------- ----------
Soumya 20000
Ramesh 25000
Priya 30000
Hrithik 35000
Harsha 35000

La consulta ordena primero el resultado de acuerdo con el nombre y luego lo muestra.

También se puede utilizar más de una columna en la cláusula ORDER BY.

Si desea ordenar la tabla de empleados con el nombre y el salario, la consulta sería como,

SELECT name, salary FROM employee ORDER BY name, salary;

La salida sería:

name salary
------------- -------------
Soumya 20000
Ramesh 25000
Priya 30000
Harsha 35000
Hrithik 35000

NOTA:Las columnas especificadas en la cláusula ORDER BY debe ser una de las columnas seleccionadas en la lista de columnas SELECT.

Puede representar las columnas de la cláusula ORDER BY especificando la posición de una columna en la lista SELECT, en lugar de escribir el nombre de la columna.

La consulta anterior también se puede escribir como se indica a continuación,

SELECT name, salary FROM employee ORDER BY 1, 2;

Por defecto, la cláusula ORDER BY ordena los datos en orden ascendente. Si desea ordenar los datos en orden descendente, se debe especificar de forma explícita, como se muestra a continuación.

SELECT name, salary
FROM employee
ORDER BY name, salary DESC;

La consulta anterior ordena sólo la columna 'salario' en orden descendente y la columna "nombre" por orden ascendente.

Si desea seleccionar el nombre y el salario en orden descendente, la consulta sería como se indica a continuación.

SELECT name, salary
FROM employee
ORDER BY name DESC, salary DESC;

Cómo utilizar expresiones en la cláusula ORDER BY?

Las expresiones de la cláusula ORDER BY de una sentencia SELECT.

Por ejemplo: Si desea mostrar el nombre del empleado, el salario actual y un aumento del 20% en el salario sólo para aquellos empleados para los cuales el porcentaje de aumento en el salario es superior a 30.000 y con el fin del aumento de precio descendiente, la instrucción SELECT se puede escribir como se muestra a continuación

SELECT name, salary, salary*1.2 AS new_salary
FROM employee
WHERE salary*1.2 > 30000
ORDER BY new_salary DESC;

La salida para la consulta anterior es como sigue.

name salary new_salary
---------- ---------- -------------
Hrithik 35000 37000
Harsha 35000 37000
Priya 30000 36000

NOTA:Los nombres definidos en la sentencia SELECT se pueden utilizar en la cláusula ORDER BY.