- Categorias:
ORDER BY¶
Especifica uma ordenação das linhas da tabela de resultados a partir de uma lista SELECT.
Sintaxe¶
Classificação por colunas específicas
Onde:
Classificação por todas as colunas
Parâmetros¶
column_aliasAlias de coluna que aparece na lista SELECT do bloco de consulta.
positionPosição de uma expressão na lista SELECT.
exprQualquer expressão em tabelas no escopo atual.
{ ASC | DESC }Opcionalmente, retorna os valores da chave de classificação em ordem ascendente (do mais baixo para o mais alto) ou descendente (do mais alto para o mais baixo).
Padrão: ASC
NULLS { FIRST | LAST }Opcionalmente especifica se valores NULL são devolvidos antes/depois de valores não NULL, com base na ordem de classificação (ASC ou DESC).
Padrão: depende da ordem de classificação (ASC ou DESC); consulte as notas de uso abaixo para detalhes
ALLClassifica os resultados por todas as colunas especificadas na lista SELECT. Os resultados são classificados pelas colunas na ordem em que aparecem.
Por exemplo, suponha que a lista SELECT contenha:
Os resultados são ordenados primeiro por
col_1, então porcol_2e depois porcol_3.Nota
Não é possível especificar ORDER BY ALL se uma coluna na lista SELECT usa uma função agregada.
Notas de uso¶
Todos os dados são ordenados de acordo com o valor do byte numérico de cada caractere na tabela ASCII. A codificação UTF-8 é suportada.
Para valores numéricos, os zeros iniciais antes do ponto decimal e os zeros finais (
0) após o ponto decimal não têm efeito sobre a ordem de classificação.
Quando NULLS FIRST ou NULLS LAST não é especificado, a ordem dos valores NULL depende da configuração do parâmetro DEFAULT_NULL_ORDERING e da ordem de classificação:
Quando a ordem de classificação é ASC (o padrão) e o parâmetro DEFAULT_NULL_ORDERING é definido como
LAST(o padrão), os valores NULL são retornados por último. Portanto, a menos que especificado de outra forma, os valores NULL são considerados mais altos do que quaisquer valores diferentes de NULL.Quando a ordem de classificação é ASC e o parâmetro DEFAULT_NULL_ORDERING é definido como
FIRST, os valores NULL são retornados primeiro.Quando a ordem de classificação é DESC e o parâmetro DEFAULT_NULL_ORDERING é definido como
FIRST, os valores NULL são retornados por último.Quando a ordem de classificação é DESC e o parâmetro DEFAULT_NULL_ORDERING é definido como
LAST, os valores NULL são retornados primeiro.
Não é garantido que a ordem de classificação seja consistente para valores de diferentes tipos de dados em dados semiestruturados, como uma matriz que contém elementos de diferentes tipos de dados.
A poda top-K pode melhorar o desempenho das consultas que incluem as cláusulas LIMIT e ORDER BY. Para obter mais informações, consulte Poda top-K para aprimoramento de desempenho da consulta.
Uma cláusula ORDER BY pode ser usada em diferentes níveis em uma consulta, como em uma subconsulta ou dentro de uma cláusula OVER() para uma função de janela. Uma cláusula ORDER BY dentro de uma subconsulta ou uma cláusula OVER() se aplica somente nesse contexto. Por exemplo, a cláusula ORDER BY nas seguintes ordens de consulta resulta somente dentro da subconsulta, não no nível mais externo da consulta:
Neste exemplo, a cláusula ORDER BY foi especificada na subconsulta, portanto a subconsulta retorna os nomes na ordem das vendas mensais. A cláusula ORDER BY na subconsulta não se aplica à consulta externa. Esta consulta retorna os nomes das três filiais que tiveram as vendas mensais mais altas, mas não necessariamente em ordem por vendas mensais.
A classificação pode ser cara. Se você quiser os resultados da consulta mais externa ordenados, use uma cláusula ORDER BY somente no nível superior da consulta, e evite usar cláusulas ORDER BY em subconsultas, a menos que seja necessário.
Da mesma forma, quando as cláusulas ORDER BY e LIMIT (ou FETCH) estão em diferentes níveis de aninhamento, os resultados podem ser imprevisíveis. Para obter detalhes e exemplos, consulte as notas de uso de LIMIT/FETCH.
Exemplos¶
Os exemplos a seguir demonstram como utilizar ORDER BY para classificar os resultados:
Classificação por valores de strings¶
O exemplo a seguir classifica os resultados por valores de strings:
Classificação por valores numéricos¶
O exemplo a seguir classifica os resultados por valores numéricos:
Classificação de NULLS primeiro ou por último¶
O exemplo a seguir configura todas as consultas na sessão para classificar NULLS por último definindo o parâmetro DEFAULT_NULL_ORDERING para LAST.
O exemplo a seguir substitui o parâmetro DEFAULT_NULL_ORDERING especificando NULLS FIRST em uma consulta:
O exemplo a seguir define o parâmetro DEFAULT_NULL_ORDERING para FIRST para classificar NULLS primeiro:
O exemplo a seguir substitui o parâmetro DEFAULT_NULL_ORDERING especificando NULLS LAST em uma consulta:
Classificação por todas as colunas na lista SELECT¶
Para executar os exemplos nesta seção, crie a seguinte tabela:
O exemplo a seguir classifica os resultados por todas as colunas da tabela:
Como mostrado abaixo, os resultados são ordenados primeiro pela coluna a, depois pela coluna s, e depois pela coluna b (a ordem em que as colunas foram definidas na tabela).
O seguinte exemplo classifica os resultados em ordem crescente:
O seguinte exemplo define o parâmetro DEFAULT_NULL_ORDERING para classificar valores NULL por último para todas as consultas executadas durante a sessão:
O seguinte exemplo especifica NULLS FIRST em uma consulta para substituir essa configuração:
O exemplo a seguir retorna as colunas na ordem b, s e a. Os resultados são classificados primeiro por b, então por s, e depois por a: