A organização dos dados retornados por uma consulta é fundamental para a análise de informações. Em SQL, essa tarefa é raelizada por meio da cláusula ORDER BY, que permite reordenar o conjunto de resultados com base em uma ou mais colunas específicas.
Fundamentos da Cláusula ORDER BY
A cláusula ORDER BY deve ser posicionada sempre ao final da instrução SELECT. Ela instrui o banco de dados a organizar as linhas recuperadas antes de entregá-las ao cliente. É importante notar que é possível ordenar os dados inclusive por colunas que não foram incluídas na lista de seleção do SELECT.
-- Ordenando uma lista de produtos pelo nome de forma alfabética
SELECT nome_produto
FROM Inventario
ORDER BY nome_produto;
-- Ordenando pelo ID do fornecedor, mesmo sem exibi-lo no resultado
SELECT nome_produto
FROM Inventario
ORDER BY id_fornecedor;
Ordenação por Múltiplas Colunas
Frequentemente, é necessário refinar a ordenação quando existem valores duplicados em uma coluna. Para isso, bastta listar as colunas desejadas separadas por vírgulas. O banco de dados processará a ordenação na sequência exata em que as colunas foram declaradas: a segunda coluna só será utilizada como critério de desempate se os valores da primeira forem idênticos.
-- Ordena primeiro pelo preço e, para preços iguais, pelo nome do item
SELECT id_item, preco_unitario, descricao_item
FROM Catalogo
ORDER BY preco_unitario, descricao_item;
Ordenação baseada na Posição da Coluna
O SQL permite referenciar as colunas pela sua posição numérica na instrução SELECT, em vez de usar seus nomes literais. Embora essa técnica reduza a digitação, ela é considerada uma prática de risco em ambientes produtivos, pois alterações na estrutura da query (como adicionar ou remover colunas) podem quebrar a lógica de ordenação silenciosamente.
-- O número 2 refere-se a 'preco_venda' e o 3 a 'nome_comercial'
SELECT id_sku, preco_venda, nome_comercial
FROM Produtos
ORDER BY 2, 3;
Definindo a Direção da Ordenação (ASC e DESC)
Por padrão, a ordenação no SQL é ascendente (do menor para o maior ou de A a Z). Caso seja necessário inverter essa lógica, utiliza-se a palavra-chave DESC (abreviação de DESCENDING). A palavra-chave ASC pode ser usada para reforçar a ordenação ascendente, embora seja opcional.
Um detalhe crucial: o modificador DESC aplica-se exclusivamente à coluna que o precede. Para ordenar múltiplas colunas de forma decrescente, o comando deve ser aplicado individualmente a cada uma delas.
-- Ordenação decrescente simples por valor
SELECT ref_codigo, valor_mercadoria
FROM Estoque
ORDER BY valor_mercadoria DESC;
-- Ordenação mista: preço decrescente e nome ascendente (padrão)
SELECT ref_codigo, valor_mercadoria, nome_artigo
FROM Estoque
ORDER BY valor_mercadoria DESC, nome_artigo;