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;
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;
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;
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;
5 – Vamos retornar os nomes dos produtos com suas descrições, ordenados por descrição.
SELECT nome_produto, descricao FROM produtos ORDER BY descricao;
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;
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;
É isso aí!
Escreva um comentário