Com o SQL ORDER BY, pode ordenar os re­sul­ta­dos da pesquisa para consultas de dados por ordem crescente ou de­cres­cente. Ao ordenar os dados da sua tabela de destino por linhas e colunas, será muito mais fácil encontrar os dados que procura, o que acelera as análises de dados e as consultas de conjuntos complexos.

O que é o comando SQL ORDER BY?

O comando ORDER BY no SQL é utilizado para ordenar dados e re­sul­ta­dos de conjuntos de dados simples ou complexos na tabela de destino. Com ele, é possível es­pe­ci­fi­car que os dados de destino sejam ordenados em ordem crescente ou de­cres­cente, ficando assim or­ga­ni­za­dos e fáceis de consultar. Por pre­de­fi­ni­ção, o comando ordena os dados da consulta por ordem as­cen­dente, ou seja, de A a Z ou do valor mais baixo para o mais alto. Se preferir uma ordem diferente, deve in­tro­du­zir a palavra-chave ASC para as­cen­dente ou DESC para des­cen­dente.

Pode se­le­ci­o­nar uma ou várias colunas para ordenar os re­sul­ta­dos da sua consulta. A função ORDER BY é fun­da­men­tal, pois apresenta os dados de forma or­ga­ni­zada, per­mi­tindo assim consultar os dados de forma rápida e eficaz. ORDER BY é fre­quen­te­mente utilizada em conjunto 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

Gostaria de trabalhar com SQL, mas não tem os co­nhe­ci­men­tos ne­ces­sá­rios para isso? Na nossa in­tro­du­ção ao SQL com exemplos, pode aprender o básico para começar a utilizar esta linguagem de pro­gra­ma­ção.

A sintaxe do SQL ORDER BY

A sintaxe do ORDER BY é a seguinte:

SELECT  columnaA, columnaB, …  o *
FROM  tabla
ORDER BY  columnaA, columnaB, …  (opcional: ASC o DESC)
sql
Nota

Se es­pe­ci­fi­car apenas uma coluna após o número ORDER BY, obterá uma coluna com os re­sul­ta­dos ordenados. Se es­pe­ci­fi­car várias colunas, a cláusula ordena primeiro todos os re­sul­ta­dos de acordo com a coluna A. Se houver entradas idênticas em linhas di­fe­ren­tes, a cláusula ordena as entradas de acordo com a coluna B.

Podes ampliar a sintaxe do SQL ORDER BY com os ope­ra­do­res ou pa­râ­me­tros que desejares. Através da cláusula WHERE, defines, por exemplo, condições adi­ci­o­nais para limitar os re­sul­ta­dos da consulta. Para utilizar esta cláusula, deves escrever o seguinte:

SELECT  columnaA, columnaB, …  o *
FROM  tabla
WHERE  columnaA  =  'condición'
ORDER BY  columnaA, columnaB, …  (opcional: ASC o DESC)
sql

Podem ser uti­li­za­dos estes pa­râ­me­tros:

  • SELECT: através da instrução SQL SELECT, pode definir quais os dados que pretende analisar. Com o asterisco *, es­pe­ci­fica se a consulta se aplica a todo o conjunto de dados ou pode indicar nomes de colunas para examinar colunas es­pe­cí­fi­cas.
  • FROM: define de que tabela os dados são con­sul­ta­dos.
  • WHERE: a cláusula opcional SQL WHERE permite definir uma condição es­pe­cí­fica segundo a qual os re­sul­ta­dos devem ser ordenados. Neste caso, pode utilizar ope­ra­do­res de com­pa­ra­ção adi­ci­o­nais, como =, ou ope­ra­do­res como SQL LIKE ou SQL NOT.
  • ORDER BY: define de acordo com que valor os re­sul­ta­dos devem ser ordenados. Se não adicionar nem ASC nem DESC, a ordem será au­to­ma­ti­ca­mente al­fa­bé­tica ou numérica des­cen­dente.
Nota

A cláusula ORDER BY ordena os valores NULL em função da base de dados utilizada e da sequência de ordenação escolhida. No SQLite, MySQL e SQL Server, o comando trata os valores NULL como os valores mais baixos, pelo que, quando ordenados em ordem crescente, ficam no início. No Oracle e no Post­greSQL, os valores NULL são con­si­de­ra­dos os valores mais altos, pelo que, quando ordenados em ordem crescente, ficam no final.

As uti­li­za­ções do ORDER BY

Estas são algumas das possíveis apli­ca­ções do SQL ORDER BY:

  • clas­si­fi­car in­for­ma­ções sobre produtos por nome, categoria ou preço;
  • clas­si­fi­car tran­sa­ções por quan­ti­dade, data ou nome;
  • ordenar pedidos por quan­ti­dade ou ava­li­a­ções;
  • ordenar fun­ci­o­ná­rios por salário, atri­bui­ções, de­sem­pe­nho ou de­par­ta­mento;
  • criar listas de in­ven­tá­rio por quan­ti­dade ou nome;
  • ordenar entregas por código postal ou número de rastreio;
  • ordenar listas de clientes por região ou idade.

Exemplos de SQL ORDER BY

A seguir, ex­pli­ca­mos como funciona ORDER BY através de três exemplos.

Ordenar produtos por preço

Imagina que, na tabela «Produtos», precisas de ordenar os produtos da categoria «Beleza» por preço, em ordem crescente. Para isso, deves utilizar FROM para definir a categoria que pretendes ordenar. Em seguida, introduz ORDER BY e ASC para ordenar por preço em ordem crescente, da seguinte forma:

SELECT  *
FROM  Productos
WHERE  categoría  = 'Belleza'
ORDER BY  precio  ASC;
sql

Filtrar grupos de clientes

Imagina que, na tabela «Clientes», pretendes ordenar al­fa­be­ti­ca­mente os nomes dos clientes pro­ve­ni­en­tes da Alemanha. Para tal, deves utilizar a condição «país» e, para ordenar de A a Z, deves adicionar ASC. Se quisesses ordenar de Z a A, deverias in­tro­du­zir DESC após o comando ORDER BY do SQL. Escrever-se-ia assim:

SELECT  *
FROM  Clientes
WHERE  país = 'Alemania'
ORDER BY  nombre  DESC;
sql

Ordenar com várias condições

Imagina que, na tabela «Produtos», precisas de obter os registos da categoria «Ele­tró­nica» por quan­ti­dade, por ordem al­fa­bé­tica as­cen­dente. E, se a quan­ti­dade do pedido for idêntica, queres ordenar os pedidos por região. A sintaxe seria a seguinte:

SELECT  *
FROM  Productos
WHERE  categoría  =  'Electrónica'
ORDER BY  cantidad ASC,  región  DESC;
sql

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

Ba­si­ca­mente, não existe uma al­ter­na­tiva que tenha a mesma função que ORDER BY, mas entre os comandos SQL que costumam ser uti­li­za­dos em com­bi­na­ção com o SQL ORDER BY encontra-se o SQL GROUP BY. Enquanto que com GROUP BY é possível agrupar conjuntos de dados de colunas, por exemplo, por categoria, com ORDER BY também é possível ordená-los.

Por exemplo, imagine que pretende agrupar o número de en­co­men­das dos clientes por país e, em seguida, ordená-las por média de en­co­men­das em ordem crescente, uti­li­zando a função de agregação AVG do SQL. Esta é a sintaxe que deve utilizar:

SELECT  país, AVG(cantidad)
FROM  Clientes
WHERE  categoría = 'Electrónica'
GROUP BY  país
ORDER BY  AVG(cantidad) ASC;
sql

A cláusula SQL HAVING também permite ordenar conjuntos de dados de acordo com critérios e condições definidos. Ao utilizar LIMIT, é possível limitar o número de re­sul­ta­dos.

Ir para o menu principal