Como ordenar consultas com cláusula ORDER BY no PostgreSQL

Cláusula ORDER BY no PostgreSQL

Com a cláusula ORDER BY no PostgreSQL podemos realizar a ordenação dos resultados retornados em uma consulta, tanto em ordem crescente quanto em ordem decrescente (alfabética, por data ou numérica). 

Sintaxe

SELECT colunas
FROM tabela
[WHERE condições]
ORDER BY coluna, coluna ASC | DESC
[NULLS FIRST | LAST]

Opções NULLS FIRST | LAST

Essas duas opções são usadas para determinar se eventuais valores nulos presentes no resultado da consulta devem ser mostrados antes ou depois dos valores não-nulos.

Exemplos

Para nossos exemplos vamos inserir alguns registros novos em uma tabela de cadastro de produtos de nosso banco de dados de testes. Com a declaração INSERT INTO a seguir podemos criar cinco linhas novas nesta tabela:

INSERT INTO produtos(cod_produto,nome_produto,descricao,preco,qtde_estoque)
VALUES
(6,'Detergente','Detergente líquido 500 ml',1.89,32),
(7,'Leite Integral','Leite Integral caixa de 1 litro',4.60,70),
(8,'Refrigerante','Garrafa de refrigerante de 600 ml',3.70,14),
(9,'Refrigerante','Garrafa de refrigerante de 1 litro',6.89,16),
(10,'Refrigerante','Lata de refrigerante de 350 ml',2.99,45);

Também vamos inserir um registro na tabela de produtos sem no entanto especificar sua descrição. Assim poderemos testar posteriormente a opção NULLS FIRST | LAST em nossos exemplos:

INSERT INTO produtos(cod_produto,nome_produto,preco,qtde_estoque)
VALUES (11,'Margarina',3.20,8);

Vejamos agora alguns exemplos de emprego da cláusula ORDER BY em consultas SQL.

Exemplos

1 – Retornar todos os dados da tabela de produtos, ordenados em ordem crescente de nome de produto.

SELECT * FROM Produtos
ORDER BY nome_produto;

Exemplo 01 cláusula ORDER BY no PostgreSQL

2 – Vamos retornar novamente todos os dados da tabela de produtos, porém agora ordenados pela quantidade em estoque em ordem decrescente (predicado DESC).

SELECT * FROM Produtos
ORDER BY qtde_estoque DESC;

Exemplo 02 cláusula ORDER BY no PostgreSQL

3 – Obtemos os nomes de produtos e seus respectivos preços, ordenados por nome de produto (ordem alfabética)

SELECT nome_produto, preco
FROM Produtos
ORDER BY nome_produto;

Exemplo 03 cláusula ORDER BY no PostgreSQL

4 – O mesmo que o exemplo #3, porém agora vamos ordenar primeiro por nome de produto, e então por preço para cada produto que aparecer mais de uma vez no resultado (em ordem crescente)

SELECT nome_produto, preco
FROM Produtos
ORDER BY nome_produto, preco;

Exemplo 04 cláusula ORDER BY no PostgreSQL

5 – Vamos retornar os nomes dos produtos com suas descrições, ordenados por descrição.

SELECT nome_produto, descricao
FROM produtos
ORDER BY descricao;

Exemplo 05 cláusula ORDER BY no PostgreSQL

Note que há valores nulos (NULL) no resultado da consulta, e perceba onde eles aparecem.

6 – Agora vamos obter novamente os nomes dos produtos com suas descrições, ordenados por descrição, porém colocando os valores nulos no início da tabela de resultados (opção NULLS FIRST).

SELECT nome_produto, descricao
FROM produtos
ORDER BY descricao NULLS FIRST;

Exemplo 06 cláusula ORDER BY no PostgreSQL

7 – Finalmente, vamos obter os nomes dos produtos com seus preços, ordenados por preço em ordem decrescente (do mais caro para o mais barato), porém somente dos produtos que custem mais do que R$ 10,00 (filtro com cláusula WHERE).

SELECT nome_produto, preco
FROM produtos
WHERE preco > 10.00
ORDER BY preco DESC;

Exemplo 07 cláusula ORDER BY no PostgreSQL

É isso aí!

 

Sobre Fábio dos Reis (1357 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*