CodeGym /Cursos /SQL SELF /Ordenação de dados (ORDER BY): ordem crescente e decresce...

Ordenação de dados (ORDER BY): ordem crescente e decrescente (ASC, DESC)

SQL SELF
Nível 2 , Lição 3
Disponível

Quando você trabalha com bancos de dados, muitas vezes precisa ver os dados em uma ordem específica. Por exemplo:

  • "Me mostra o top-10 dos produtos mais caros."
  • "Quais pedidos foram os mais recentes?"
  • "Qual a idade dos alunos, começando pelos mais novos?"

Querer organizar os dados é super normal: mesmo se você for um programador sinistro, lidar com um monte de linhas bagunçadas não é nada legal. Por isso o SQL dá pra gente uma ferramenta pra ordenar as linhas do resultado — o operador ORDER BY.

O básico da ordenação com ORDER BY

ORDER BY é tipo uma varinha mágica que deixa você organizar as linhas do resultado. Sem ele, os dados vêm em uma ordem "aleatória" (não é bug do banco, só que a ordem não é garantida).

Olha só como é a sintaxe do ORDER BY:

SELECT coluna1, coluna2
FROM tabela
ORDER BY coluna1 DESC;
  • coluna1: nome da coluna que você quer usar pra ordenar.
  • ASC: ordenação crescente (isso é o valor padrão, então pode deixar de fora se quiser).
  • DESC: ordenação decrescente.

Exemplo

Imagina que a gente tem uma tabela students:

id name age
1 Alex 22
2 Maria 19
3 Otto 21

Bora ordenar os alunos pela idade (do menor pro maior):

SELECT name, age
FROM students
ORDER BY age ASC;

Resultado:

name age
Maria 19
Otto 21
Alex 22

Se mudar a direção da ordenação pra decrescente:

SELECT name, age
FROM students
ORDER BY age DESC;

O resultado vai ser assim:

name age
Alex 22
Otto 21
Maria 19

Ordenando por várias colunas

Às vezes, uma coluna só não resolve. Imagina que tem vários alunos com a mesma idade e você quer adicionar uma ordenação extra, tipo pelo nome.

Ordenando por várias colunas:

SELECT coluna1, coluna2
FROM tabela
ORDER BY coluna1 DESC, coluna2 ASC;

Vamos ver um exemplo pra essa tabela:

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Query:

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Resultado:

name age
Anna 19
Maria 19
Otto 21
Alex 22

Aqui primeiro rola a ordenação pela idade (crescente), e dentro de cada idade, pelo nome em ordem alfabética.

Ordenando com aliases

Se você usa aliases (apelidos) pras colunas, também pode ordenar por esses aliases.

SELECT name AS "Nome", age AS "Idade"
FROM students
ORDER BY "Idade" DESC;

Resultado:

Nome Idade
Alex 22
Otto 21
Maria 19

Por que isso é importante? Porque antigamente não dava pra fazer isso, e era treta ordenar por colunas calculadas.

Ordenando com colunas calculadas

O SQL deixa você fazer cálculos direto na query, e depois ordenar pelo resultado desses cálculos.

Exemplo 1. Cálculo simples

SELECT name, age, age * 2 AS idade_dobrada
FROM students
ORDER BY idade_dobrada DESC;

Resultado:

name age idade_dobrada
Alex 22 44
Otto 21 42
Maria 19 38

Exemplo 2. Usando funções. Imagina que a gente guarda preços dos produtos na tabela products:

product_name price
Produto A 100
Produto B 200
Produto C 150

Agora vamos ordenar pelo preço arredondado, multiplicado por 0.9 (tipo, com desconto). A função ROUND devolve o número arredondado pra quantas casas decimais você quiser.

SELECT product_name, price, ROUND(price * 0.9, 1) AS preco_com_desconto
FROM products
ORDER BY preco_com_desconto ASC;

O resultado vai ser assim:

product_name price preco_com_desconto
Produto A 100 90
Produto C 150 135
Produto B 200 180

Aplicação prática da ordenação

Ordenar é chave nos seguintes cenários:

  • Montar relatórios, tipo o top-10 das melhores vendas do mês.
  • Mostrar dados em interfaces de usuário, tipo lista de pedidos ordenada por data.
  • Gerar listas pra análise, tipo separar grupos por prioridade.

Erros comuns ao usar ORDER BY

Os erros podem aparecer em qualquer canto. Se liga em alguns pontos pra prestar atenção:

  • Se tentar ordenar por uma coluna que não existe, vai dar erro: column "not_a_column" does not exist.
  • Ordenar por alias que é usado numa coluna calculada pode confundir, se o alias foi definido num nível acima.
  • Se esquecer de colocar a direção da ordenação, o PostgreSQL vai usar ASC por padrão. Não é erro, mas pode dar resultado inesperado.

Agora você já sabe como controlar a ordenação no PostgreSQL usando ORDER BY. Lembra que dados bem organizados são metade do caminho pra fazer queries SQL eficientes. Bora pra próxima! 😉

1
Pesquisa/teste
Introdução ao SQL, nível 2, lição 3
Indisponível
Introdução ao SQL
Introdução ao SQL
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION