7.5. Ordenação de linhas

PostgreSQL 14.5: Ordenação de linhas (ORDER BY)

Após a consulta ter produzido a tabela de saída (após a lista de seleção ter sido processada) esta tabela pode, opcionalmente, ser ordenada. Se nenhuma ordenação for especificada, as linhas retornam em uma ordem aleatória. Neste caso, a ordem real depende dos tipos de plano de varredura e de junção e da ordem no disco, mas não se deve confiar nisto. Uma ordem de saída específica somente pode ser garantida se a etapa de ordenação for especificada explicitamente.

A cláusula ORDER BY especifica a ordem de classificação:

SELECT lista_de_seleção
    FROM expressão_de_tabela
    ORDER BY coluna1 [ASC | DESC] [, coluna2 [ASC | DESC] ...]

onde coluna1, etc., fazem referência às colunas da lista de seleção. Pode ser tanto o nome de saída da coluna (consulte a Seção 7.3.2) quanto o número da coluna. Alguns exemplos:

SELECT a, b FROM tabela1 ORDER BY a;
SELECT a + b AS soma, c FROM tabela1 ORDER BY soma;
SELECT a, sum(b) FROM tabela1 GROUP BY a ORDER BY 1;

Como extensão ao padrão SQL, o PostgreSQL também permite ordenar por expressões arbitrárias:

SELECT a, b FROM tabela1 ORDER BY a + b;

Também é permitido fazer referência a nomes de colunas da cláusula FROM que não estão presentes na lista de seleção:

SELECT a FROM tabela1 ORDER BY b;

Mas estas extensões não funcionam nas consultas envolvendo UNION, INTERSECT ou EXCEPT, e não são portáveis para outros bancos de dados SQL.

Cada especificação de coluna pode ser seguida pela palavra opcional ASC ou DESC, para definir a direção de ordenação como ascendente ou descendente. A ordem ASC é o padrão. A ordenação ascendente coloca os valores menores na frente, sendo que "menor" é definido nos termos do operador <. De forma semelhante, a ordenação descendente é determinada pelo operador >. [1]

Se for especificada a ordenação por mais de uma coluna, as últimas entradas são utilizadas para ordenar as linhas iguais sob a ordem imposta pelas colunas de ordenação anteriores.

Notas

[1]

Na verdade, o PostgreSQL utiliza a classe de operadores B-tree padrão para o tipo de dado da coluna para determinar a ordem de classificação para ASC e DESC. Por convenção, os tipos de dado são configurados de maneira que os operadores < e > correspondam a esta ordem de classificação, mas o projetista de um tipo de dado definido pelo usuário pode decidir fazer algo diferente.

SourceForge.net Logo CSS válido!