Ordenando por expressões e aliases
Saiba onde referências a aliases são permitidas em ORDER BY e como ordenar por lógica calculada.
Ordenando por expressões e aliases é uma aula grátis de SQL Interview Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Interview Prep inclui 4 aulas no total.
ORDER BY é mais flexível do que você imagina
Um número surpreendente de candidatos acredita que ORDER BY só pode fazer referência a colunas simples. Na verdade, você pode ordenar por expressões, apelidos, posições de colunas e lógica CASE.
Os entrevistadores usam isso para testar se você entende a ordem lógica de execução da consulta, pois ORDER BY é executado depois de SELECT, exatamente por isso os apelidos funcionam aqui, mas não em WHERE.
Por que os apelidos são permitidos em ORDER BY
Lembre-se da ordem lógica de execução: FROM, WHERE, GROUP BY, HAVING, SELECT e, depois, ORDER BY. Como SELECT é executado antes de ORDER BY, os apelidos de colunas definidos em SELECT já existem quando ORDER BY é avaliado.
Esse é o motivo exato pelo qual um apelido funciona em ORDER BY, mas falha em WHERE — uma questão que os entrevistadores gostam de relacionar novamente à ordem de execução.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;Ordenando por uma expressão bruta
Você também pode repetir a expressão completa em ORDER BY em vez de usar o apelido. As duas formas são válidas; o resultado é idêntico.
Usar o apelido é mais limpo e evita duplicar a lógica, mas algumas equipes preferem a expressão explícita por clareza. Em uma entrevista, qualquer resposta é aceitável, desde que você consiga justificá-la.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;Ordenando pela posição da coluna (ordinal)
Você pode ordenar pela posição ordinal de um item da lista de seleção: ORDER BY 2 ordena pela segunda coluna selecionada. É conciso, mas frágil, pois reordenar a lista de SELECT altera silenciosamente a ordenação.
Dica para entrevistas: saiba que esse recurso existe e que, em geral, ele não é recomendado em código de produção por questões de legibilidade e segurança.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;Ordenando por um CASE calculado
Um padrão poderoso é ordenar por uma expressão CASE para impor uma ordem personalizada e não alfabética. Aqui, colocamos os maiores salários primeiro usando uma prioridade derivada.
O CASE produz uma classificação de ordenação que não tem uma coluna própria; o mecanismo a avalia exclusivamente para ordenar.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;Ordenação categórica personalizada
As colunas de status raramente são ordenadas de forma sensata em ordem alfabética. "ativo, pendente, encerrado" seria alfabetizado como "ativo, encerrado, pendente", o que está errado. Um CASE associa cada valor a uma classificação definida.
Esse é um requisito frequente em relatórios e uma forma clara de mostrar que você consegue controlar a ordenação além da ordem natural.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;Ordenando pelo resultado de uma função
Qualquer função escalar funciona em ORDER BY. Por exemplo, ordene sem diferenciar maiúsculas de minúsculas com LOWER, ou ordene pelo comprimento da string ou por uma parte da data.
Observação: envolver uma coluna em uma função durante a ordenação pode impedir que o mecanismo use um índice nessa coluna, assim como ocorre em WHERE.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;Apelidos e agregações em consultas com GROUP BY
Em uma consulta agrupada, você frequentemente ordena por uma agregação. Pode referenciar o apelido da agregação em ORDER BY, novamente porque SELECT é executado primeiro.
A consulta abaixo conta os pedidos por cliente e os ordena por essa contagem em ordem decrescente, usando o apelido order_count.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;Armadilha da colisão entre apelido e nome
Um caso-limite apreciado pelos entrevistadores: e se o seu apelido tiver o mesmo nome de uma coluna real? A maioria dos mecanismos resolve um nome simples em ORDER BY primeiro como o apelido da lista de seleção, o que pode causar surpresa.
Se você der a salary * 2 AS salary o apelido salary e depois usar ORDER BY salary, ordenará pelo valor dobrado, não pela coluna subjacente. Evite reutilizar nomes de colunas como apelidos para eliminar essa ambiguidade.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;Combinando expressões e direções
Você pode combinar todos esses elementos em uma única cláusula: uma expressão, depois um apelido e, em seguida, uma coluna simples, cada um com sua própria direção. O exemplo ordena por uma faixa de bônus calculada em ordem decrescente e depois pelo nome em ordem crescente como critério de desempate.
Combinar chaves dessa forma é a base das consultas reais de relatórios.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;Ressalvas de portabilidade
Embora expressões e apelidos em ORDER BY tenham amplo suporte, observe alguns pontos para entrevistas:
- Posições ordinais (
ORDER BY 2) são padrão, mas não recomendadas. - A visibilidade dos apelidos em
ORDER BYé consistente nos principais mecanismos, ao contrário de emWHERE/HAVING. SELECT DISTINCTimpõe uma restrição: você só pode usarORDER BYem expressões que apareçam na lista de seleção.
Verificação rápida
Relacione a visibilidade dos aliases à ordem de execução.
Revisão
Ordenação por expressões e aliases:
ORDER BYaceita aliases, expressões brutas, funções, lógica comCASEe posições ordinais.- Os aliases funcionam porque
ORDER BYé executado depois deSELECTna ordem lógica. - Use
CASEpara criar uma ordenação categórica personalizada. - Evite nomes de alias que colidam com colunas reais para prevenir ambiguidades.
- Funções na chave de ordenação podem impedir o uso de índices.
Perguntas Frequentes
A aula “Ordenando por expressões e aliases” é grátis?
Sim — o texto completo de “Ordenando por expressões e aliases” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Interview Prep, atualize para CoddyKit PRO. O curso de SQL Interview Prep inclui 4 aulas no total.
O que vou aprender em “Ordenando por expressões e aliases”?
Saiba onde referências a aliases são permitidas em ORDER BY e como ordenar por lógica calculada. Você pratica SQL Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Interview Prep?
Nenhuma experiência prévia é necessária. SQL Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Ordenando por expressões e aliases”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Interview Prep?
Sim. Cada aula de SQL Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Ordenação por várias colunas e posicionamento de NULL
- LIMIT, OFFSET e FETCH FIRST
- Retornando as linhas Top-N de forma confiável
- Ordenando por expressões e aliases