Para que serve a cláusula ORDER BY?
Ordena os resultados de uma consulta SQL com base nos valores de uma ou mais colunas.
Qual a ordem padrão usada pelo ORDER BY?
A ordem crescente (ASC) é a padrão.
SELECT * FROM clientes ORDER BY nome;
Como ordenar resultados em ordem decrescente?
Usando DESC:
SELECT * FROM clientes ORDER BY idade DESC;
Como ordenar por múltiplas colunas?
SELECT * FROM clientes
ORDER BY estado ASC, nome DESC;
Posso ordenar por número da coluna no SELECT?
SELECT nome, idade FROM clientes
ORDER BY 2; – ordena por idade
ORDER BY vem antes ou depois do WHERE?
Vem depois. A ordem correta é:
SELECT → FROM → WHERE → ORDER BY
Posso usar ORDER BY junto com FETCH FIRST?
Sim. Exemplo:
SELECT * FROM clientes
ORDER BY limite_credito DESC
FETCH FIRST 5 ROWS ONLY;
Como ordenar nomes ignorando letras maiúsculas/minúsculas?
Usando UPPER() ou LOWER() na cláusula:
SELECT * FROM clientes
ORDER BY UPPER(nome);
O ORDER BY afeta a performance?
Sim, pode impactar a performance, principalmente em grandes volumes de dados sem índice nas colunas ordenadas.
Como ordenar uma consulta pelos valores numéricos de uma coluna?
(ordem crescente, do menor para o maior)
SELECT * FROM produtos
ORDER BY preco;
Como limitar a saída aos 3 produtos mais caros?
SELECT * FROM produtos
ORDER BY preco DESC
FETCH FIRST 3 ROWS ONLY;
O que acontece se a coluna numérica tiver valores nulos?
Por padrão, o Oracle posiciona os valores NULL no final ao usar ORDER BY ASC e no início ao usar ORDER BY DESC.
Como ordenar os resultados colocando NULL no final, mesmo com DESC?
SELECT * FROM produtos
ORDER BY preco DESC NULLS LAST;
Qual a ordem padrão ao usar ORDER BY em colunas de texto?
Ordem crescente (ASC) alfabética, de “A” a “Z”.
SELECT nome FROM clientes ORDER BY nome;
O Oracle diferencia maiúsculas de minúsculas no ORDER BY?
Sim, por padrão “A” e “a” são diferentes. Para ignorar o caso, use UPPER() ou LOWER().
Como colocar valores NULL no final mesmo usando ASC?
SELECT cidade FROM clientes
ORDER BY cidade ASC NULLS LAST;
Como ordenar primeiro por sobrenome e depois por nome?
SELECT sobrenome, nome FROM pessoas
ORDER BY sobrenome, nome;
Posso ordenar pelo resultado de uma função sobre a coluna?
Sim. Ex.: remover acentos com função e ordenar:
SELECT nome FROM clientes
ORDER BY TRANSLATE(UPPER(nome),’ÁÉÍÓÚÂÊÔÃÕÀÇ’,’AEIOUAEOAOC’);
Como ordenar por texto e limitar os 5 primeiros resultados? (12c+)
SELECT nome FROM clientes
ORDER BY nome
FETCH FIRST 5 ROWS ONLY;
Como manter a ordem original da string mas ainda aplicar ORDER BY?
Use alias numérico da coluna na lista de seleção:
SELECT nome, cidade
FROM clientes
ORDER BY 1; – 1ª coluna da lista (nome)
Como ordenar primeiro por departamento (ASC) e, dentro dele, por salário (DESC)?
SELECT departamento, salario
FROM funcionarios
ORDER BY departamento ASC,
salario DESC;
Como ordenar por estado; se houver empate, por cidade e, por fim, por nome?
SELECT nome, cidade, estado
FROM clientes
ORDER BY estado,
cidade,
nome;
Como misturar texto e número: categoria (ASC) e preço com desconto (preço – desconto) em ordem crescente?
SELECT categoria,
preco,
desconto
FROM produtos
ORDER BY categoria,
(preco - desconto);
Como ordenar ignorando maiúsculas/minúsculas em dois campos (sobrenome, nome)?
SELECT sobrenome, nome
FROM pessoas
ORDER BY UPPER(sobrenome),
UPPER(nome);