# SQL ORDER BY: aprenda a ordenar os resultados da sua pesquisa

Com o SQL `ORDER BY`, pode ordenar os resultados da pesquisa para consultas de dados **por ordem crescente ou decrescente**. 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 resultados de conjuntos de dados simples ou complexos na tabela de destino. Com ele, é possível especificar que os dados de destino sejam ordenados **em ordem crescente ou decrescente**, ficando assim organizados e fáceis de consultar. Por predefinição, o comando ordena os dados da consulta por ordem ascendente, ou seja, de A a Z ou do valor mais baixo para o mais alto. Se preferir uma ordem diferente, deve introduzir a palavra-chave `ASC` para *ascendente* ou `DESC` para *descendente*.

Pode selecionar uma ou várias colunas para ordenar os resultados da sua consulta. A função `ORDER BY` é fundamental, pois apresenta os dados de forma organizada, permitindo assim **consultar os dados de forma rápida e eficaz**. `ORDER BY` é frequentemente utilizada em conjunto com SQL SELECT, SQL WHERE e, dependendo do caso, com outros operadores SQL ou funções como SQL GROUP BY

Dica Gostaria de trabalhar com [SQL](https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/o-que-e-sql/), mas não tem os conhecimentos necessários para isso? Na nossa [introdução ao SQL com exemplos](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/introducao-ao-sql-com-exemplos/), pode aprender o básico para começar a utilizar esta linguagem de programação.

## A sintaxe do SQL `ORDER BY`

A sintaxe do `ORDER BY` é a seguinte:

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

Nota Se especificar apenas uma coluna após o número `ORDER BY`, obterá **uma coluna com os resultados ordenados**. Se especificar várias colunas, a cláusula ordena primeiro todos os resultados de acordo com a coluna A. Se houver entradas idênticas em linhas diferentes, a cláusula ordena as entradas de acordo com a coluna B.

Podes ampliar a sintaxe do SQL `ORDER BY` com os operadores ou parâmetros que desejares. Através da cláusula `WHERE`, defines, por exemplo, condições adicionais para limitar os resultados da consulta. Para utilizar esta cláusula, deves escrever o seguinte:

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

Podem ser utilizados estes parâmetros:

- `SELECT`: através da instrução SQL SELECT, pode definir quais os dados que pretende analisar. Com o asterisco `*`, especifica se a consulta se aplica a todo o conjunto de dados ou pode indicar nomes de colunas para examinar colunas específicas.
- `FROM`: define de que tabela os dados são consultados.
- `WHERE`: a cláusula opcional SQL WHERE permite definir uma condição específica segundo a qual os resultados devem ser ordenados. Neste caso, pode utilizar operadores de comparação adicionais, como `=`, ou operadores como SQL LIKE ou [SQL NOT](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/sql-not/).
- `ORDER BY`: define de acordo com que valor os resultados devem ser ordenados. Se não adicionar nem `ASC` nem `DESC`, a ordem será automaticamente alfabética ou numérica descendente.

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 PostgreSQL, os valores NULL são considerados os valores mais altos, pelo que, quando ordenados em ordem crescente, ficam no final.

## As utilizações do `ORDER BY`

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

- classificar informações sobre produtos por nome, categoria ou preço;
- classificar transações por quantidade, data ou nome;
- ordenar pedidos por quantidade ou avaliações;
- ordenar funcionários por salário, atribuições, desempenho ou departamento;
- criar listas de inventário por quantidade 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, explicamos 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:

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

### Filtrar grupos de clientes

Imagina que, na tabela «Clientes», pretendes ordenar alfabeticamente os nomes dos clientes provenientes 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 introduzir `DESC` após o comando `ORDER BY` do SQL. Escrever-se-ia assim:

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

### Ordenar com várias condições

Imagina que, na tabela «Produtos», precisas de obter os registos da categoria «Eletrónica» por quantidade, por ordem alfabética ascendente. E, se a quantidade do pedido for idêntica, queres ordenar os pedidos por região. A sintaxe seria a seguinte:

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

## Alternativas ao SQL `ORDER BY`

Basicamente, não existe uma alternativa que tenha a mesma função que `ORDER BY`, mas entre os comandos SQL que costumam ser utilizados em combinaçã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 encomendas dos clientes por país e, em seguida, ordená-las por média de encomendas em ordem crescente, utilizando a função de agregação AVG do SQL. Esta é a sintaxe que deve utilizar:

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

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 resultados.


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/sql-order-by/](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/sql-order-by/) for AI/LLM consumption.