Cláusula ORDER BY - Amazon Redshift

Cláusula ORDER BY

A cláusula ORDER BY classifica o conjunto de resultados de uma consulta.

Sintaxe

[ ORDER BY expression [ ASC | DESC ] ] [ NULLS FIRST | NULLS LAST ] [ LIMIT { count | ALL } ] [ OFFSET start ]

Parâmetros

expressão

Expressão que define a ordem de classificação do conjunto de resultados da consulta, geralmente especificando uma ou mais colunas na lista de seleção. Os resultados são obtidos com base na ordem binária UTF-8. Também é possível especificar o seguinte:

  • Colunas que não estiverem na lista de seleção

  • Expressões formadas por uma ou mais colunas que existem em tabelas referidas pela consulta

  • Números ordinais que representam a posição de entradas da lista de seleção (ou a posição das colunas na tabela se não houver lista de seleção)

  • Aliases que definem entradas da lista de seleção

Quando a cláusula ORDER BY tiver várias expressões, o conjunto de resultados será classificado de acordo com a primeira expressão, e a segunda expressão será aplicada a linhas que tenham valores correspondentes com os da primeira expressão, e assim por diante.

ASC | DESC

Opção que define a ordem de classificação para a expressão, da seguinte forma:

  • ASC: ascendente (por exemplo, de valores numéricos menores para maiores e de "A" a "Z" para strings de caracteres). Se nenhuma opção é especificada, os dados são classificados na ordem ascendente por padrão.

  • DESC: descendente (de valores numéricos maiores para menores; de "Z" a "A" para strings).

NULLS FIRST | NULLS LAST

Opção que especifica se valores NULL devem ser classificados primeiro, antes de valores não nulos, ou por último, depois de valores não nulos. Por padrão, os valores NULL são ordenados e classificados por último na ordem ASC e são ordenados e classificados primeiro na ordem DESC.

LIMIT number | ALL

Opção que controla o número de linhas classificadas que a consulta retorna. O número LIMIT deve ser um inteiro positivo. O valor máximo é 2147483647.

LIMIT 0 não retorna linhas. Você pode usar essa sintaxe para fins de teste: para garantir que uma consulta seja executada (sem exibir qualquer linha) ou obter uma lista de colunas de uma tabela. Uma cláusula ORDER BY é redundante se você estiver usando LIMIT 0 para obter uma lista de colunas. O valor padrão é LIMIT ALL.

OFFSET start

Opção que especifica para ignorar o número de linhas antes de start antes de começar a retornar linhas. O número OFFSET deve ser um inteiro positivo. O valor máximo é 2147483647. Quando usadas com a opção de LIMIT, as linhas OFFSET são ignoradas antes de iniciar a contagem de linhas LIMIT que são retornadas. Se a opção LIMIT não for usada, o número de linhas no conjunto de resultados será reduzido para o número de linhas ignoradas. As linhas ignoradas por uma cláusula OFFSET ainda precisam passar por varredura, e pode não ser eficiente usar um valor OFFSET grande.

Observações de uso

Observe o seguinte comportamento esperado com cláusulas ORDER BY:

  • Os valores NULL são considerados "mais altos" que todos os demais valores. Com a ordem de classificação crescente padrão, os valores NULL são classificados no final. Para alterar esse comportamento, use a opção NULLS FIRST.

  • Quando uma consulta não tiver uma cláusula ORDER BY, o sistema retornará conjuntos de resultados sem uma classificação previsível das linhas. A mesma consulta executada duas vezes pode retornar o conjunto de resultados em uma ordem diferente.

  • As opções LIMIT e OFFSET podem ser usadas sem uma cláusula ORDER BY. No entanto, para obter um conjunto consistente de linhas, use essas opções em conjunto com ORDER BY.

  • Em qualquer sistema paralelo como o Amazon Redshift, quando uma cláusula ORDER BY não produz uma classificação exclusiva dos dados, a ordem das linhas não é determinística. Portanto, se a expressão ORDER BY produz valores duplicados, a ordem de retorno dessas linhas pode variar de outros sistemas ou de uma execução do Amazon Redshift para outra.

  • O Amazon Redshift não oferece suporte a literais de string nas cláusulas ORDER BY.