Oracle

Ordenar datos en Oracle con ORDER BY: SQL y PL/SQL

En el mundo de las bases de datos, la capacidad de ordenar datos según nuestros criterios es fundamental para facilitar la comprensión y el análisis de la información almacenada. En Oracle, una poderosa herramienta de gestión de bases de datos, la cláusula ORDER BY nos permite ordenar los resultados de una consulta en función de una o varias columnas.

En este tutorial, vamos a explorar en detalle cómo utilizar la cláusula ORDER BY en Oracle. Veremos cómo agregar esta cláusula a una sentencia SELECT y cómo especificar el orden en el que queremos que se muestren los datos, ya sea de forma ascendente o descendente. Además, discutiremos distintos escenarios de ordenamiento, como el ordenamiento por una columna, por múltiples columnas, por posición de columna y por valores NULL. También veremos cómo es posible ordenar por el resultado de una función o expresión. Este tutorial te proporcionará los conocimientos necesarios para dominar la ordenación de datos en Oracle tanto en el lenguaje SQL como en PL/SQL.

¿Qué es la cláusula ORDER BY en Oracle?

La cláusula ORDER BY en Oracle es una sentencia que se utiliza junto con la sentencia SELECT para ordenar los resultados de una consulta de acuerdo a uno o varios criterios de ordenamiento. Permite especificar la columna o columnas por las cuales se desea ordenar los datos, así como el orden en el que se deben mostrar los resultados, ya sea de forma ascendente (de menor a mayor) o descendente (de mayor a menor).

La cláusula ORDER BY es especialmente útil cuando se trabaja con grandes volúmenes de datos o cuando se necesita presentar la información de manera ordenada y fácil de entender. Al utilizar esta cláusula, los datos resultantes de la consulta serán presentados de acuerdo con el criterio de ordenamiento especificado, lo que facilita la búsqueda y el análisis de la información.

Ordenar por una sola columna

La cláusula ORDER BY nos permite ordenar los resultados de una consulta por una sola columna en Oracle. Para ello, simplemente debemos especificar el nombre de la columna por la cual deseamos ordenar, seguido de la palabra clave ASC (ascendente) o DESC (descendente) para indicar el orden en el que se mostrarán los datos.

Veamos un ejemplo práctico. Supongamos que tenemos una tabla llamada «clientes» con las columnas «nombre» y «edad». Si queremos ordenar los resultados por la columna «edad» en orden ascendente, podemos utilizar la siguiente sentencia SELECT:

SELECT nombre, edad
FROM clientes
ORDER BY edad ASC;

En este caso, los resultados se mostrarán en orden ascendente según la columna «edad». Es decir, los registros se ordenarán de menor a mayor edad.

Si, en cambio, queremos ordenar los resultados en orden descendente, podemos utilizar la palabra clave DESC:

SELECT nombre, edad
FROM clientes
ORDER BY edad DESC;

Con esta sentencia, los registros se mostrarán en orden descendente según la columna «edad», es decir, de mayor a menor edad.

Recomendado:  Oracle ALTER TABLE MODIFY Column: Guía Práctica y Ejemplos

Ordenar por múltiples columnas

Además de ordenar por una sola columna, la cláusula ORDER BY en Oracle nos permite ordenar los resultados de una consulta por múltiples columnas. Esto nos brinda flexibilidad para organizar los datos de acuerdo a diferentes criterios.

Para ordenar por múltiples columnas, simplemente debemos especificar el nombre de las columnas en el orden en el que deseamos que se aplique el ordenamiento. Si hay empates en los valores de una columna, se utilizará la siguiente columna especificada para desempatar y así sucesivamente.

Veamos un ejemplo. Supongamos que tenemos una tabla llamada «productos» con las columnas «nombre», «precio» y «stock». Si queremos ordenar los resultados primero por la columna «nombre» y luego por la columna «precio», en orden ascendente, podemos utilizar la siguiente sentencia SELECT:

SELECT nombre, precio, stock
FROM productos
ORDER BY nombre, precio ASC;

En este caso, los resultados se mostrarán ordenados alfabéticamente por la columna «nombre». En caso de haber dos o más registros con el mismo nombre, se procederá a ordenarlos por el valor de la columna «precio» en orden ascendente.

También podemos indicar un orden descendente para alguna de las columnas utilizando la palabra clave DESC. Por ejemplo, si queremos ordenar los resultados por la columna «nombre» de forma ascendente y por la columna «precio» de forma descendente, podemos utilizar la siguiente sentencia:

SELECT nombre, precio, stock
FROM productos
ORDER BY nombre ASC, precio DESC;

Con esta sentencia, los registros se ordenarán alfabéticamente por la columna «nombre» en orden ascendente y, en caso de haber dos o más registros con el mismo nombre, se ordenarán por el valor de la columna «precio» en orden descendente.

Ordenar por posición de columna

En Oracle, no solo podemos ordenar por el nombre de una columna, sino también por su posición en la lista de columnas seleccionadas en la sentencia SELECT. Esto puede ser útil cuando no conocemos el nombre de una columna o cuando deseamos ordenar por una columna calculada o expresión que no tiene un nombre específico.

Para ordenar por posición de columna, simplemente debemos indicar el número de la columna en la cláusula ORDER BY, en lugar de su nombre. El primer número de columna es 1, el segundo es 2 y así sucesivamente.

Veamos un ejemplo. Supongamos que tenemos una tabla llamada «empleados» con las columnas «nombre», «apellido» y «salario». Si deseamos ordenar los resultados por la segunda columna, es decir, por «apellido», podemos utilizar la siguiente sentencia SELECT:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY 2;

En este caso, los resultados se mostrarán ordenados por la segunda columna, es decir, por «apellido». Esto es especialmente útil cuando no conocemos el nombre de la columna o cuando la columna de interés no tiene un nombre específico.

También es posible combinar el ordenamiento por posición de columna con el ordenamiento por nombre de columna, en caso de que necesitemos especificar un ordenamiento adicional. Por ejemplo, si queremos ordenar por la tercera columna y luego por la primera columna, podemos utilizar la siguiente sentencia:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY 3, nombre;

Con esta sentencia, los registros se ordenarán por la tercera columna, es decir, por «salario», y en caso de haber dos o más registros con el mismo valor de «salario», se ordenarán por la primera columna, es decir, por «nombre».

Recomendado:  ¿Cómo utilizar el SQL LOOP en PL/SQL y Oracle SQL?

Ordenar por valores NULL

En Oracle, la cláusula ORDER BY también nos permite ordenar los resultados de una consulta teniendo en cuenta los valores NULL. Los valores NULL representan la ausencia de un valor en una columna y pueden afectar el ordenamiento de los datos si no se manejan correctamente.

Por defecto, cuando utilizamos la cláusula ORDER BY, los valores NULL se tratan como los valores más bajos en el ordenamiento, es decir, se muestran primero si ordenamos de forma ascendente y se muestran al final si ordenamos de forma descendente.

Veamos un ejemplo. Supongamos que tenemos una tabla llamada «empleados» con las columnas «nombre», «apellido» y «salario». Si queremos ordenar los resultados por la columna «salario» en orden ascendente, pero queremos que los valores NULL se muestren al final, podemos utilizar la siguiente sentencia SELECT:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY salario NULLS LAST;

En este caso, los resultados se mostrarán en orden ascendente según la columna «salario», pero los valores NULL se mostrarán al final. Si quisiéramos que los valores NULL se mostraran primero, podríamos utilizar la cláusula NULLS FIRST:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY salario NULLS FIRST;

Es importante tener en cuenta cómo se deben tratar los valores NULL en el ordenamiento de los resultados, ya que esto puede ser relevante para el análisis y la interpretación de los datos.

Ordenar por resultado de una función o expresión

En Oracle, la cláusula ORDER BY nos permite ordenar los resultados de una consulta utilizando el resultado de una función o expresión. Esto puede ser útil cuando deseamos aplicar transformaciones o cálculos a los datos antes de ordenarlos.

Para ordenar por el resultado de una función o expresión, simplemente debemos incluir la función o expresión en la cláusula ORDER BY, en lugar de una columna específica. Podemos utilizar cualquier función o expresión válida en Oracle.

Veamos un ejemplo. Supongamos que tenemos una tabla llamada «empleados» con las columnas «nombre», «apellido» y «fecha_nacimiento». Si queremos ordenar los resultados por la edad de los empleados, podemos utilizar la siguiente sentencia SELECT:

SELECT nombre, apellido, fecha_nacimiento
FROM empleados
ORDER BY SYSDATE - fecha_nacimiento;

En este caso, estamos utilizando la función SYSDATE para obtener la fecha actual y restándole la columna «fecha_nacimiento». Esto nos dará la edad de cada empleado. Los resultados se mostrarán en orden ascendente según la edad de los empleados.

También podemos utilizar expresiones o cálculos más complejos en la cláusula ORDER BY. Por ejemplo, si queremos ordenar los resultados por el salario multiplicado por un factor de bonificación, podemos utilizar la siguiente sentencia:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY salario * 1.1;

En este caso, estamos multiplicando el salario por un factor de bonificación del 10%. Los resultados se mostrarán en orden ascendente según el valor resultante de esta expresión.

Recomendado:  Oracle NOT NULL: Alter Table Column Not Null for Data Integrity

Al utilizar funciones o expresiones en la cláusula ORDER BY, tenemos la flexibilidad de aplicar transformaciones o cálculos a los datos antes de ordenarlos, lo que nos permite obtener resultados más personalizados y adaptados a nuestras necesidades.

Ejemplos prácticos

A continuación, te proporcionaré algunos ejemplos prácticos de cómo utilizar la cláusula ORDER BY en Oracle para ordenar los resultados de una consulta. Estos ejemplos te ayudarán a comprender mejor cómo aplicar esta cláusula en diferentes escenarios.

1. Ordenar por nombre de forma ascendente:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY nombre;

2. Ordenar por apellido de forma descendente:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY apellido DESC;

3. Ordenar por fecha de contratación de forma ascendente y luego por nombre de forma descendente:

SELECT nombre, apellido, fecha_contratacion
FROM empleados
ORDER BY fecha_contratacion, nombre DESC;

4. Ordenar por salario de forma descendente, y en caso de que haya empates, ordenar por nombre de forma ascendente:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY salario DESC, nombre;

5. Ordenar por posición de columna, donde la primera columna es la edad y la segunda columna es el nombre:

SELECT nombre, apellido, edad
FROM empleados
ORDER BY 2, 1;

6. Ordenar por valores NULL al inicio:

SELECT nombre, apellido, direccion
FROM clientes
ORDER BY direccion NULLS FIRST;

7. Ordenar por el resultado de una función, en este caso el producto entre el precio y la cantidad:

SELECT nombre_producto, precio, cantidad
FROM productos
ORDER BY (precio * cantidad) DESC;

Estos ejemplos te mostrarán cómo puedes utilizar la cláusula ORDER BY en Oracle para ordenar los resultados de una consulta de acuerdo a tus requisitos específicos. Recuerda que la cláusula ORDER BY es muy flexible y te permite ordenar por una o varias columnas, por posición de columna, por valores NULL y por el resultado de una función o expresión.

Conclusiones

La cláusula ORDER BY en Oracle nos permite ordenar los resultados de una consulta de manera precisa y personalizada. Con esta cláusula, podemos especificar una o varias columnas por las cuales ordenar los datos, así como el orden (ascendente o descendente) en el que se mostrarán los resultados.

Además de ordenar por el nombre de una columna, también podemos ordenar por posición de columna, lo que resulta útil cuando no conocemos el nombre específico de una columna o cuando deseamos ordenar por una columna calculada o expresión. También podemos tener en cuenta los valores NULL y decidir si queremos que se muestren al inicio o al final del ordenamiento.

La cláusula ORDER BY también nos brinda la flexibilidad de ordenar por el resultado de una función o expresión. Esto nos permite aplicar transformaciones o cálculos a los datos antes de ordenarlos, lo que puede ser especialmente útil para casos de análisis más complejos.

Con todos estos recursos, la cláusula ORDER BY en Oracle se convierte en una herramienta poderosa para organizar y presentar la información de manera más comprensible y significativa. Con el dominio de esta cláusula, podrás realizar consultas mucho más efectivas y obtener resultados ordenados de acuerdo a tus necesidades específicas.

Autor

osceda@hotmail.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *