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 SELECTinstrução.

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

O seguinte ilustra a sintaxe da ORDER BY cláusula:

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 ORDER BYpalavras – chave. 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  ASCopção de classificar as linhas em ordem crescente e a DESCopção de classificar as linhas em ordem decrescente. Se você omitir a opção ASCou DESC, o ORDER BY usa ASCpor padrão.

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

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

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

ORDER BYExemplos de PostgreSQL

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

mesa do cliente

1) Usando a ORDER BYcláusula PostgreSQL para classificar linhas por uma coluna

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

PostgreSQL ORDER BY um exemplo de coluna

Como a ASCopção é o padrão, você pode omiti-la na ORDER BYcláusula como esta:

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

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

PostgreSQL ORDER BY uma coluna DESC exemplo

3) Usando a ORDER BYcláusula 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:

PostgreSQL ORDER BY colunas múltiplas

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 ORDER BYcláusula PostgreSQL para classificar linhas por expressões

LENGTH()função 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:

Expressões ORDER BY do PostgreSQL

Como a ORDER BYcláusula é avaliada após a SELECTcláusula, o alias da coluna lenestá disponível e pode ser usado na ORDER BYcláusula.

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 NULLcom outros valores não nulos usando a opção NULLS FIRSTou NULLS LASTda ORDER BYcláusula:

NULLS FIRSTopção é colocada NULLantes de outros valores não nulos e a NULL LASTopção é colocada NULLapós outros valores não nulos.

Vamos criar uma mesa para a demonstração.

Observe que você não precisa entender as instruções CREATE TABLEINSERT. Você só precisa executá-lo pgAdminou psqlcriar a sort_demotabela e inserir dados nela.

A consulta a seguir retorna dados da sort_demotabela:

Neste exemplo, a ORDER BYcláusula classifica os valores na numcoluna da sort_demotabela em ordem crescente. Coloca NULLdepois de outros valores.

Portanto, se você usar a ASCopção, a ORDER BYcláusula usará a NULLS LASTopção por padrão. Portanto, a seguinte consulta retorna o mesmo resultado:

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

A instrução a seguir classifica os valores na numcoluna da sort_demotabela em ordem decrescente:

Como você pode ver claramente na saída, a ORDER BYcláusula com a DESCopção usa o NULLS FIRSTpor padrão.

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

Resumo

  • Use a ORDER BYcláusula na SELECTinstrução para classificar as linhas.
  • Use a ASCopção de classificar as linhas em ordem crescente e a DESCopção de classificar as linhas em ordem decrescente. A ORDER BYcláusula usa a ASCopção por padrão.
  • Use as opções NULLS FIRSTNULLS LASTpara especificar explicitamente a ordem NULLcom outros valores não nulos.

Deixe um comentário

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