Ordenar por cláusula en PostgreSQL
-
Cláusula
ORDER BY
de PostgreSQL -
Uso de la cláusula
ORDER BY
de PostgreSQL -
Ejemplos de código que demuestran el uso de la cláusula
ORDER BY
de 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:
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:
por Orden Descendente de OrderAmount
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC;
Producción:
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 en orden descendente
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name DESC;
Producción:
Tanto Ascendente como Descendente
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name ASC;
Producción:
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:
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:
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;
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.
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