Com a cláusula SQL ORDER BY, você organiza re­sul­ta­dos de consultas de dados de acordo com as suas ne­ces­si­da­des es­pe­cí­fi­cas, em ordem crescente ou de­cres­cente. Ao ordenar dados, na tabela alvo, em linhas e colunas, você melhora a vi­su­a­li­za­ção e a le­gi­bi­li­dade deles. Use SQL ORDER BY para otimizar e acelerar análises de dados e consultas em conjuntos de dados complexos.

O que é o comando SQL ORDER BY?

Se você deseja ordenar dados e re­sul­ta­dos de conjuntos de dados, simples ou complexos, na tabela alvo, utilize a cláusula SQL ORDER BY. Com ela, você pode definir que os re­sul­ta­dos de uma consulta de dados sejam apre­sen­ta­dos em ordem crescente ou de­cres­cente. Assim, você obterá re­sul­ta­dos de consultas mais bem or­ga­ni­za­dos e fáceis de ler. Por padrão, o comando organiza os dados con­sul­ta­dos em ordem crescente, ou seja, de A a Z ou do menor ao maior valor. Se preferir outra ordem, faça uso de palavras-chave opcionais, como ASC (as­cen­dente) e DESC (des­cen­dente).

Você pode definir uma ou várias colunas para exibir re­sul­ta­dos de uma consulta. Por apre­sen­tar dados de forma or­ga­ni­zada, ORDER BY de­sem­pe­nha um papel im­por­tante em consultas de dados ordenadas e rápidas. A cláusula é fre­quen­te­mente utilizada em com­bi­na­ção com SQL SELECT, SQL WHERE e, de­pen­dendo do caso, com outros ope­ra­do­res SQL ou funções, como SQL GROUP BY.

Dica

Quer saber mais sobre SQL, mas tem pouca ex­pe­ri­ên­cia? Nosso guia in­tro­du­tó­rio ao SQL fa­ci­li­tará o seu apren­di­zado dessa linguagem de banco de dados tão re­qui­si­tada.

Sintaxe de SQL ORDER BY

A sintaxe da cláusula ORDER BY é a seguinte:

SELECT  ColunaA, ColunaB, …  ou * 
FROM  Tabela 
ORDER BY  ColunaA, ColunaB, …  (opcional: ASC ou DESC)
sql
Nota

Se você es­pe­ci­fi­car apenas uma coluna após ORDER BY, obterá uma coluna com re­sul­ta­dos ordenados. Se es­pe­ci­fi­car várias colunas, a cláusula pri­mei­ra­mente ordenará todos os re­sul­ta­dos pela ColunaA. Se houver entradas idênticas em di­fe­ren­tes linhas, ela or­ga­ni­zará as entradas pela ColunaB.

Você pode expandir a sintaxe de SQL ORDER BY com ope­ra­do­res e pa­râ­me­tros. Com a cláusula WHERE, por exemplo, você define condições adi­ci­o­nais para res­trin­gir os re­sul­ta­dos da consulta. A sintaxe, em com­bi­na­ção com WHERE, é a seguinte:

SELECT  ColunaA, ColunaB, …  ou * 
FROM  Tabela 
WHERE  ColunaA  =  'Condição de Busca' 
ORDER BY  ColunaA, ColunaB, …  (opcional: ASC ou DESC)
sql

Esses pa­râ­me­tros podem ser uti­li­za­dos:

  • SELECT: Com SQL SELECT, você define quais dados deseja analisar. Use um asterisco * para consultar o conjunto de dados completo ou es­pe­ci­fi­que os nomes das colunas, caso deseje examinar colunas es­pe­cí­fi­cas.
  • FROM: Define a tabela cujos dados devem ser con­sul­ta­dos.
  • WHERE: Com a cláusula opcional SQL WHERE, você define uma condição es­pe­cí­fica de busca para ordenar os re­sul­ta­dos. Aqui, o operador de com­pa­ra­ção =, ou os ope­ra­do­res SQL LIKE e SQL NOT podem ser uti­li­za­dos.
  • ORDER BY: Define qual valor será usado para ordenar os re­sul­ta­dos. Se você não adicionar ASC ou DESC, a ordem será au­to­ma­ti­ca­mente al­fa­bé­tica ou nu­me­ri­ca­mente de­cres­cente.
Nota

A cláusula SQL ORDER BY organiza valores NULL au­to­ma­ti­ca­mente ou de acordo com a ordem escolhida, de­pen­dendo do banco de dados. Em bancos de dados SQLite, MySQL e SQL Server, a cláusula in­ter­preta valores NULL como os menores valores: na ordem crescente, eles aparecem no início. Em bancos de dados Oracle e Post­greSQL, valores NULL são con­si­de­ra­dos os maiores valores: na ordem crescente, eles aparecem no final.

Apli­ca­ções de SQL ORDER BY

Alguns casos práticos para a uti­li­za­ção da cláusula SQL ORDER BY incluem:

  • Ordenar in­for­ma­ções de produtos por nome, categoria ou preço.
  • Organizar tran­sa­ções por valor, data ou nome.
  • Ordenar pedidos por quan­ti­dade ou ava­li­a­ções.
  • Clas­si­fi­car fun­ci­o­ná­rios por salário, tarefas, de­sem­pe­nho ou de­par­ta­mento.
  • Listar in­ven­tá­rios por quan­ti­dade ou nome.
  • Ordenar entregas por código postal ou número de ras­tre­a­mento.
  • Ordenar listas de clientes por região ou idade.

Exemplos práticos de SQL ORDER BY

Para ilustrar o fun­ci­o­na­mento da cláusula SQL ORDER BY, ela­bo­ra­mos três exemplos práticos:

Ordenar produtos por preço

Para ordenar produtos da categoria “Beleza”, em uma tabela “Produtos”, por preço e em ordem crescente, defina, com FROM que categoria deve ser ordenada. Com ORDER BY e ASC, você es­pe­ci­fica que deseja ordenar por “Preço” e em ordem crescente. Observe:

SELECT  * 
FROM  Produtos 
WHERE  Categoria  = 'Beleza' 
ORDER BY  Preço  ASC;
sql

Filtrar grupos de clientes

Em uma tabela “Clientes”, você deseja ordenar al­fa­be­ti­ca­mente todos os clientes do Brasil usando a condição de ordenação “País”. Para organizar de A a Z, não é ne­ces­sá­rio adicionar ASC. Se desejar ordenar de Z a A, adicione DESC ao comando SQL ORDER BY:

SELECT  * 
FROM  Clientes 
WHERE  País = 'Brasil' 
ORDER BY  Nome  DESC;
sql

Ordenando com várias condições

Você deseja ordenar as entradas da categoria “Ele­trô­ni­cos”, em uma tabela “Produtos”, pela quan­ti­dade de pedidos em ordem al­fa­bé­tica crescente. Para entradas com a mesma quan­ti­dade de pedidos, a ordenação deve respeitar a região. A sintaxe é a seguinte:

SELECT  * 
FROM  Produtos 
WHERE  Categoria  =  'Eletrônicos' 
ORDER BY  Quantidade_Pedidos ASC,  Região  DESC;
sql

Al­ter­na­ti­vas a SQL ORDER BY

Ba­si­ca­mente, não existe uma al­ter­na­tiva que exerça a mesma função de ORDER BY. No entanto, um dos comandos SQL fre­quen­te­mente uti­li­za­dos em com­bi­na­ção com o ORDER BY é o SQL GROUP BY. Enquanto o GROUP BY agrupa registros de colunas por categoria, por exemplo, você pode adi­ci­o­nal­mente ordená-los com o ORDER BY.

Exemplo: Você deseja agrupar o valor do pedido dos clientes por país e, em seguida, ordenar de forma crescente pela quan­ti­dade média de pedidos, o que pode ser feito pela função de agregação SQL AVG. A sintaxe é a seguinte:

SELECT  País, AVG(Quantidade_Pedidos) 
FROM  Clientes 
WHERE  Categoria = 'Eletrônicos' 
GROUP BY  País 
ORDER BY  AVG(Quantidade_Pedidos) ASC;
sql

Com a cláusula SQL HAVING, você pode filtrar os registros ordenados por critérios e condições es­pe­cí­fi­cos. Com LIMIT, é possível res­trin­gir a quan­ti­dade de re­sul­ta­dos a um número desejado.

Ir para o menu principal