Um negócio pode gerar muitos dados, que serão úteis de acordo com a forma em que são apresentados. Como exemplo, temos uma loja que registra suas vendas em uma tabela chamada VENDAS_DIARIAS em um banco de dados. Se observar todas as vendas de um dia na ordem em que foram gravadas pode ser difícil de entender tantos dados misturados. Esses dados precisam ser ordenados de forma a facilitar sua leitura.
Veja o resultado na Figura 1 de uma consulta a tabela VENDAS_DIARIAS.
Se a loja precisar de uma lista de produtos na ordem do mais vendido para o menos vendido, temos que mudar a ordem em que os dados são apresentados.
Saiba mais: ORDER BY
Veja na Figura 2 o resultado de uma consulta a tabela VENDAS_DIARIAS ordenada pelos produtos mais vendidos.
O que há de diferente na segunda consulta? Ela solicita que os dados sejam ordenados pela coluna quantidade em ordem decrescente. Na linguagem SQL solicitamos uma ordenação dos dados quando acrescentamos a cláusula ORDER BY a um comando SELECT.
Nesse artigo, vamos conhecer a sintaxe do comando SELECT com a cláusula ORDER BY e as opções de ordenação disponíveis.
Sintaxe do comando SELECT com a cláusula ORDER BY
Para escrever uma query que consulte uma tabela e ordene os dados por uma ou mais colunas utilizamos a sintaxe da Listagem 1.
SELECT [colunas]
FROM [nome da tabela]
WHERE [condição]
ORDER BY [coluna ou colunas] ASC
-- (ASC para ordem crescente ou DESC para ordem decrescente)
A cláusula ORDER BY deve ser escrita após a seleção das colunas (SELECT), a definição da tabela (FROM) e a condição(WHERE) se ela existir.
Vamos nos concentrar na linha 4 da Listagem 1 que se refere a cláusula ORDER BY.
O uso de ORDER BY basicamente está dividido em três partes:
- cláusula ORDER BY
- Uma coluna ou uma lista de colunas que serão a base da ordenação
- Usamos ASC para ordem crescente, do menor valor para o maior valor, ou DESC para ordem decrescente, do maior valor para o menor valor.
Ordenando por uma coluna
Como podemos consultar a tabela VENDAS_DIARIAS, e ordenar seus dados pela coluna valor_unitario? Para realizar essa consulta temos de executar a query da Listagem 2.
SELECT id
,data_venda
,produto
,categoria
,valor_unitario
,quantidade
,valor_total
FROM vendas_diarias
ORDER BY valor_unitario
Na linha 9 da Listagem 2 temos a cláusula ORDER BY e o nome da coluna valor_unitario. Não informamos o tipo da ordem ASC ou DESC, por padrão a ordem será do tipo ASC ou ordem crescente, do menor valor para o maior valor.
Veja o resultado da execução dessa query na Figura 3.
Ordem decrescente
Como podemos consultar a tabela VENDAS_DIARIAS e ordenar seus dados pela coluna valor_total em ordem decrescente? Para realizar essa consulta temos de executar a query da Listagem 3.
SELECT ID
,data_venda
,produto
,categoria
,valor_unitario
,quantidade
,valor_total
FROM vendas_diarias
ORDER BY valor_total DESC
Na linha 9 da Listagem 3 temos a cláusula ORDER BY e o nome da coluna valor_total. Informamos o tipo da ordem como DESC, para ordem decrescente, ou seja, do maior valor para o menor valor.
Veja o resultado da execução dessa query na Figura 4.
Ordenando por várias colunas
Agora, como podemos consultar a tabela VENDAS_DIARIAS e ordenar seus dados pela coluna valor_unitario em ordem decrescente e pela coluna produto em ordem crescente? Para realizar essa consulta temos de executar a query da Listagem 4.
SELECT ID
,data_venda
,produto
,categoria
,valor_unitario
,quantidade
,valor_total
FROM vendas_diarias
ORDER BY valor_unitario DESC
,produto
Na linha 9 da Listagem 4 temos a cláusula ORDER BY e o nome da coluna valor_unitario e DESC para ordem decrescente. E na linha 10 temos a coluna produto. Como não foi definido o tipo de ordem, por padrão, a coluna produto terá ordem crescente.
Veja o resultado da execução dessa query na Figura 5.
Como vimos nesse artigo, aprendemos a criar consultas com o comando SELECT combinado a cláusula ORDER BY. Agora podemos obter os dados de nossas tabelas com diversas opções de ordem por uma ou mais tabelas.