Cláusula ORDER BY

Quando precisamos que o resultado de nossa consulta a uma tabela seja fornecido em uma ordem específica, de acordo com um determinado critério, devemos usar a cláusula ORDER BY que, como o próprio nome diz, considera uma certa ordem para retornar os dados de uma consulta. A sintaxe padrão é a seguinte:

SELECT coluna1, coluna2 FROM nomedatabela ORDER BY coluna1

Usaremos os exemplos a seguir usando a tabela Produtos.

Saiba mais: SQL: ORDER BY

Ordenando por uma coluna: Para que os dados sejam retornados e exibidos de acordo com o nome da coluna, usamos o seguinte comando:

Ordenando por uma coluna

O comando acima determina que as colunas NOMEPRODUTO e VALORPRODUTO sejam selecionadas. Além disso, a exibição dos valores da coluna NOMEPRODUTO é retornada em ordem alfabética, como podemos ver:

CLÁUSULA ORDER BY

Ordenando por várias colunas: É possível usar a cláusula ORDER BY para ordenar os dados por várias colunas, com base nos nomes das colunas e nas posições das mesmas no SELECT. Com o comando a seguir conseguimos isso:

Ordenando por várias colunas

O resultado será esse:

Resultado

ORDER BY ASC e DESC

A cláusula ORDER BY pode ser utilizada com as opções ASC e DESC, descritas abaixo:

  • ASC: Quando utilizada, esta opção faz com que as linhas sejam retornadas em ordem ascendente.
  • DESC: Quando utilizada, esta opção faz com que as linhas sejam retornadas em ordem descendente.

Caso não especifiquemos ASC ou DESC, os dados da tabela serão retornados em ordem ascendente, que é o valor padrão. Veja abaixo o uso das opções:

ASC: Executemos a seguinte instrução:

ASC

E veremos o seguinte resultado:

Resultado

A opção ASC também pode ser usada para ordenar os dados de uma tabela conforme duas colunas diferentes. Para isso, devemos usar a seguinte instrução:

opção ASC

Iremos obter o seguinte resultado:

Resultado

Assim como o ASC, a opção DESC também pode ser adotada para ordenar os dados de uma tabela conforme duas ou mais colunas diferentes. Para isso, podemos usar o seguinte comando:

ASC e DESC

O resultado será esse:

Resultado

Percebam que podemos fazer diversas combinações de consultas com ASC e DESC.

CLÁUSULA TOP

Como resultado de uma consulta a uma tabela de banco dados, temos a opção de retornar a quantidade de linhas desejada, a partir da primeira linha selecionada. Para isso, usamos a cláusula TOP. Usando a tabela Produtos como exemplo, usamos a seguinte instrução para retornar as cinco primeiras linhas desta tabela:

cláusula TOP

O resultado será esse:

Resultado

O uso da cláusula TOP merece as seguintes considerações:

  • Em Partitioned Views, TOP não pode ser aplicada junto às instruções UPDATE e INSERT.
  • Não há ordem das linhas referenciadas na expressão TOP utilizada com as instruções INSERT, DELETE ou UPDATE, sendo que TOP n retornam linhas aleatórias n como resposta.

CLÁUSULA TOP COM ORDER BY

As cláusulas TOP e ORDER BY podem e devem ser utilizadas de forma conjunta. Usando novamente a tabela Produtos como exemplo, vamos exibir os três primeiros produtos de menor preço, dentre a relação de produtos da lista. Usamos a seguinte instrução:

CLÁUSULA TOP COM ORDER BY

Que nos resultará nisso:

Resultado

Da mesma forma, se desejar retornarmos os dois produtos mais caros da tabela, por exemplo, usaremos a seguinte instrução:

CLÁUSULA TOP COM ORDER BY

Que nos resultará nesses valores:

Resultado

CLÁUSULA TOP WITH TIES COM ORDER BY

Permitida apenas em instruções SELECT e quando uma cláusula ORDER BY é especificada, a cláusula TOP WITH TIES determina que linhas adicionais sejam retornadas a partir do conjunto de resultados base com o mesmo valor apresentado nas colunas ORDER BY, sendo exibidas como as últimas das linhas TOP n (PERCENT).

Considerando nossa tabela de Produtos, vamos exibir seus dados em ordem crescente conforme a coluna QTDEPRODUTO. Isso é feito pela seguinte instrução:

CLÁUSULA TOP WITH TIES COM ORDER BY

O resultado é esse:

Resultado

Vamos supor agora que precisamos obter como resultado o produto com a menor quantidade de unidades. Porém, é preciso considerar a existência de produtos com a mesma quantidade de unidades. Neste caso, executamos a seguinte instrução para retornar os produtos com o menor número de unidades:

CLÁUSULA TOP WITH TIES COM ORDER BY

O resultado será esse:

Resultado

Podemos observar na imagem acima que existem três produtos com a mesma quantidade de unidades, ou seja, todos eles representam a menor quantidade de unidades da tabela.

Neste exemplo, além das cláusulas ORDER BY e TOP, já descritas anteriormente, a cláusula WITH TIES retorna a primeira linha da tabela, além de todas as linhas que apresentam quantidade idêntica à quantidade do produto que a cláusula TOP 1 selecionou.

Da mesma forma, por exemplo, se quisermos retornar um resultado com os dois produtos que possuem maior quantidade de unidades, seguido dos produtos que apresentam a mesma quantidade do segundo produto, usamos a seguinte instrução:

CLÁUSULA TOP WITH TIES COM ORDER BY

Que nos resultará nisso:

Resultado