Ordenar por cláusula en PostgreSQL

Bilal Shahid 15 febrero 2024
  1. Cláusula ORDER BY de PostgreSQL
  2. Uso de la cláusula ORDER BY de PostgreSQL
  3. Ejemplos de código que demuestran el uso de la cláusula ORDER BY de PostgreSQL
Ordenar por cláusula en PostgreSQL

El artículo de hoy enseña cómo ordenar el resultado de una tabla según los atributos de esa tabla. También demuestra cómo podemos usar la cláusula ORDER BY para ordenar los datos. Comencemos con la comprensión de este comando.

Cláusula ORDER BY de PostgreSQL

Para entenderlo, analicemos la instrucción SELECT. Cuando escribimos una declaración SELECT en una consulta, nos da todos los datos basados en la declaración de la tabla especificada.

Esos datos resultantes regresan sin ningún orden especificado. ¿Qué hacemos si deseamos que los datos estén en un orden específico? Usamos el comando ORDER BY con la sentencia SELECT.

El comando ORDENAR POR nos permite ordenar los datos en función de uno o varios atributos de la tabla. También podemos ordenar en orden ascendente o descendente utilizando ese conjunto de atributos.

Ahora que hemos entendido el comando ORDER BY de PostgreSQL, avancemos hacia su uso.

Uso de la cláusula ORDER BY de PostgreSQL

El comando ORDER BY se escribe después de las declaraciones SELECT y FROM junto con el resto de la consulta. Hay algunos detalles esenciales que necesitamos saber para usar este comando.

Primero, decida qué columna o conjunto de columnas se usará como nuestro parámetro para ordenar los resultados. Recuerde, depende del alcance del problema que estamos tratando de resolver.

Lo explicaremos usando ejemplos más adelante en este artículo. El detalle sintáctico importante para recordar es que usamos una coma (,) si se van a usar múltiples atributos como parámetros.

La sintaxis para un solo parámetro:

ORDER BY column_name;

La sintaxis para múltiples parámetros:

ORDER BY column1_name, column2_name;

Recuerde, si se usan múltiples parámetros, la cláusula ORDER BY primero verifica el conjunto de datos de acuerdo con el primer parámetro.

Si dos valores tienen el orden exacto de acuerdo con el primer parámetro, entonces el segundo parámetro se usa para eliminar esa similitud y clasificar los datos resultantes.

En segundo lugar, podemos ordenar los datos resultantes según los atributos en orden ascendente o descendente. Las palabras clave ASC y DESC definen si ordenar en orden ascendente o descendente, respectivamente.

Si no hemos especificado ninguna de las dos, se ordenará de forma ascendente por defecto.

La sintaxis para clasificar en orden ascendente:

ORDER BY column1_name ASC;

La sintaxis para clasificar en orden descendente:

ORDER BY column1_name DESC;

La sintaxis para clasificar en orden ascendente y descendente juntos:

ORDER BY column1_name ASC, column2_name DESC;

Por último, otro caso es cuando hay datos NULL en el atributo/columna utilizada como parámetro por la cláusula ORDER BY. Podemos especificar si poner los valores NULL antes o después de otros valores.

Las palabras clave NULLS LAST y NULLS FIRST se utilizan para esta operación. Si se utiliza la opción ASC, entonces NULLS LAST se selecciona por defecto.

Por otro lado, si se utiliza la opción DESC, entonces NULLS FIRST se selecciona por defecto. Podemos cambiarlo según lo que se requiera agregando las palabras clave.

La sintaxis para poner los valores NULOS primero:

ORDER BY column1_name ASC NULLS FIRST;

La sintaxis para poner valores NULOS al final:

ORDER BY column1_name DESC NULLS LAST;

Ejemplos de código que demuestran el uso de la cláusula ORDER BY de PostgreSQL

Para ilustrar a través de ejemplos, primero creamos una tabla de la siguiente manera:

create table Orders(
    id int,
    name varchar(30) not null,
    OrderAmount int not null,
    constraint pk_customer primary key (id)
);

insert into Orders 
values
(1,'Ben', 250),
(2, 'James', 350),
(3, 'Carl', 550),
(4, 'Adam', 550);

select * from Orders;

Producción:

ordenar por cláusula en postgresql - crear tabla

Ahora que se creó la tabla, demostremos todas las formas posibles (discutidas anteriormente) para usar el comando ORDENAR POR.

Comando PostgreSQL ORDER BY usando una expresión

El siguiente código mostrará los nombres de los clientes y su gasto total de la tabla Pedidos ordenados por el precio de los pedidos:

para orden ascendente de OrderAmount

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount ASC;

Producción:

ordenar por cláusula en postgresql - ordenar por precio en orden ascendente

por Orden Descendente de OrderAmount

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC;

Producción:

ordenar por cláusula en postgresql - ordenar por precio en orden descendente

Comando PostgreSQL ORDER BY usando múltiples expresiones

El siguiente código muestra los nombres de los clientes y su gasto total de la tabla Pedidos ordenados por el precio y el nombre del cliente de los pedidos.

Ordenar en orden ascendente

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount, name;

Producción:

ordenar por cláusula en postgresql: ordenar por precio y nombre de cliente en orden ascendente

Ordenar en orden descendente

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name DESC;

Producción:

ordenar por cláusula en postgresql: ordenar por precio y nombre de cliente en orden descendente

Tanto Ascendente como Descendente

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name ASC;

Producción:

ordenar por cláusula en postgresql: ordenar por precio y nombre de cliente en orden ascendente y descendente

Comando PostgreSQL ORDER BY con valores de atributo NULL

Usaremos una nueva tabla con valores nulos para este ejemplo que se muestra a continuación.

create table NULLTEST(
    name varchar(30) not null,
    number_ int
);

insert into NULLTEST
values 
('Jack', 250),
('Maguire', 350),
('Walker', 550),
('Michael', NULL);

select * from NULLTEST;

Producción:

orden por cláusula en postgresql - orden por comando con atributos nulos

El siguiente código mostrará nombre y número_ ordenados por los valores en la columna número_ con cualquier valor NULO primero.

SELECT name, number_
FROM NULLTEST
ORDER BY number_ ASC NULLS FIRST;

Producción:

ordenar por cláusula en postgresql - ordenar con valores nulos primero

Usar NULL FIRST con la opción de orden descendente de ORDER BY no es necesario ya que cualquier valor NULL aparecerá primero por defecto en este caso. El siguiente código mostrará nombre y número_ ordenados por los valores en la columna número_ con cualquier valor NULO.

SELECT name, number_
FROM NULLTEST
ORDER BY number_ DESC NULLS LAST;

ordenar por cláusula en postgresql - ordenar con valores nulos al final

Aquí, usar NULLS LAST con la opción de orden ascendente de ORDER BY es innecesario ya que cualquier valor NULL aparecerá al final por defecto en este caso.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub