Introdução à cláusula ORDER BY no PostgreSQL

Quando você consulta dados de uma tabela, a instrução SELECT retorna linhas em uma ordem não especificada. Para classificar as linhas do conjunto de resultados, você usa a ORDER BY cláusula na instrução SELECT.

A cláusula ORDER BY permite classificar as linhas retornadas por uma cláusula  SELECT em ordem crescente ou decrescente com base em uma expressão de classificação.

O seguinte sintaxe ilustra a cláusula ORDER BY :

Nesta sintaxe:

  • Primeiro, especifique uma expressão de classificação, que pode ser uma coluna ou uma expressão, que você deseja classificar após as palavras – chave ORDER BY. Se você deseja classificar o conjunto de resultados com base em várias colunas ou expressões, você precisa colocar uma vírgula ( ,) entre duas colunas ou expressões para separá-las.
  • Em segundo lugar, você usa a opção  ASC para classificar as linhas em ordem crescente e a opção DESC de classificar as linhas em ordem decrescente. Se você omitir a opção ASC ou DESC, o ORDER BY usa ASC por padrão.

PostgreSQL avalia as cláusulas do SELECT na seguinte ordem: FROMSELECT, e ORDER BY:

Devido à ordem de avaliação, se você tiver um alias de coluna na cláusula SELECT, poderá usá-lo na cláusula ORDER BY.

Vamos dar alguns exemplos de uso da cláusula ORDER BY  no PostgreSQL .

Exemplos de ORDER BY no PostgreSQL

Usaremos a tabela clientes no banco de dados de amostra para a demonstração.

1) Usando a cláusula ORDER BY no PostgreSQL para classificar linhas por uma coluna

A consulta a seguir usa a cláusula ORDER BY para classificar os clientes por seus nomes em ordem crescente:

Como a opção ASC é o padrão, você pode omiti-la na cláusula ORDER BY como esta:

2) Usando a cláusula ORDER BY no PostgreSQL para classificar as linhas por uma coluna em ordem decrescente

A instrução a seguir seleciona o nome e o sobrenome da tabela clientes e classifica as linhas por valores na coluna do sobrenome em ordem decrescente:

3) Usando a cláusula ORDER BY no PostgreSQL para classificar linhas por várias colunas

A instrução a seguir seleciona o nome e o sobrenome da tabela do cliente e classifica as linhas pelo nome em ordem crescente e o sobrenome em ordem decrescente:

Neste exemplo, a cláusula ORDER BY classifica as linhas por valores na primeira coluna de nome. E então ele classifica as linhas classificadas por valores na coluna de sobrenome.

Como você pode ver claramente na saída, dois clientes com o mesmo nome Kellytêm o sobrenome classificado em ordem decrescente.

4) Usando a cláusula ORDER BY no PostgreSQL para classificar linhas por expressões

A função LENGTH() aceita uma string e retorna o comprimento dessa string.

A declaração a seguir seleciona os primeiros nomes e seus comprimentos. Ele classifica as linhas pelo comprimento dos primeiros nomes:

Como a cláusula ORDER BY é avaliada após a cláusula SELECT, o alias da coluna len está disponível e pode ser usado na cláusula ORDER BY.

Cláusula ORDER BY do PostgreSQL e NULL

No mundo do banco de dados, NULLé um marcador que indica os dados ausentes ou os dados são desconhecidos no momento da gravação.

Ao classificar linhas que contêm NULL, você pode especificar a ordem de outros valores NULL não nulos usando a opção NULLS FIRST ou NULLS LAST da cláusula ORDER BY :

A opção NULLS FIRST é colocada antes de outros valores não nulos e a opção NULL LAST é colocada após outros valores não nulos.

Vamos criar uma tabela para a demonstração.

Observe que você não precisa entender as instruções CREATE TABLEINSERT. Você só precisa executá-lo pgAdmin ou psql e criar a tabela e inserir dados nela.

A consulta a seguir retorna dados da tabela demo_ordenacao:

Neste exemplo, a cláusula ORDER BY classifica os valores na coluna num da tabela demo_ordenacao em ordem crescente. Coloca depois NULL de outros valores.

Portanto, se você usar a opção ASC, a cláusula ORDER BY usará a opção NULLS LAST por padrão. Portanto, a seguinte consulta retorna o mesmo resultado:

Para colocar NULLantes de outros valores não nulos, você usa a opção NULLS FIRST:

A instrução a seguir classifica os valores na coluna num da tabela demor_ordenacao em ordem decrescente:

Como você pode ver claramente na saída, a cláusula ORDER BY com a opção DESC usa o por padrão NULLS FIRST.

Para inverter a ordem, você pode usar a opção NULLS LAST:

Deixe um comentário

O seu endereço de e-mail não será publicado.