Ordenar e formatar dados são skills importantes que ajudam a preparar relatórios legíveis, otimizar a análise de dados e melhorar a experiência dos usuários. Você vai usar isso pra criar relatórios analíticos, preparar dados pra exportação e também no dia a dia com bancos de dados. Na prática, você vai se deparar direto com situações onde precisa formatar bonitinho os dados, remover registros duplicados e ordenar as informações pra facilitar a vida. Bora ver como fazer isso hoje!
Exemplo 1: Criando uma lista de clientes únicos juntando nome e sobrenome, ordenada pelo sobrenome
A gente tem uma tabela customers com os dados dos clientes:
| id | first_name | last_name | city |
|---|---|---|---|
| 1 | Alex | Lin | New York |
| 2 | Maria | Chi | Los Angeles |
| 3 | Alex | Lin | New York |
| 4 | Anna | Song | Chicago |
Nosso objetivo:
- Juntar
first_nameelast_namenuma coluna só chamadafull_name. - Pegar só os clientes únicos.
- Ordenar a lista pelo sobrenome (
last_name).
Query SQL
SELECT DISTINCT
CONCAT(first_name, ' ', last_name) AS full_name,
city
FROM customers
ORDER BY last_name;
| full_name | city |
|---|---|
| Maria Chi | Los Angeles |
| Alex Lin | New York |
| Anna Song | Chicago |
Repara que os registros duplicados de Alex Lin foram removidos por causa do DISTINCT, e a lista ficou ordenada pelo sobrenome em ordem alfabética.
Exemplo 2: Formatando dados de pedidos e ordenando
Na tabela orders ficam os dados dos pedidos:
| order_id | customer_name | order_date | total_amount |
|---|---|---|---|
| 1 | Alex Lin | 2023-10-01 | 1500 |
| 2 | Maria Chi | 2023-10-02 | 2000 |
| 3 | Alex Lin | 2023-10-03 | 1500 |
| 4 | Anna Song | 2023-10-04 | 3000 |
Nosso objetivo:
- Criar uma coluna
formatted_order_dateonde a data do pedido fica no formato DD-MM-YYYY. - Remover registros duplicados de cliente e data (deixar só combinações únicas de
customer_nameeorder_date). - Ordenar os pedidos pela data, do mais recente pro mais antigo.
- Query SQL
SELECT DISTINCT
customer_name,
TO_CHAR(order_date, 'DD-MM-YYYY') AS formatted_order_date,
total_amount
FROM orders
ORDER BY order_date DESC;
Resultado:
| customer_name | formatted_order_date | total_amount |
|---|---|---|
| Anna Song | 04-10-2023 | 3000 |
| Alex Lin | 03-10-2023 | 1500 |
| Maria Chi | 02-10-2023 | 2000 |
Perceba que com a função TO_CHAR() a gente mudou o formato da data pra DD-MM-YYYY, e com DISTINCT tirou os registros duplicados.
Exemplo 3: Pegando combinações únicas de "nome + sobrenome" dos estudantes e ordenando por sobrenome e data de nascimento
Na tabela students estão os dados dos estudantes:
| student_id | first_name | last_name | birth_date |
|---|---|---|---|
| 1 | Alex | Lin | 2001-03-15 |
| 2 | Maria | Chi | 2000-06-20 |
| 3 | Alex | Lin | 2001-03-15 |
| 4 | Anna | Song | 1999-10-10 |
Nosso objetivo:
- Juntar nome e sobrenome numa coluna só chamada
full_name. - Pegar combinações únicas de "nome + sobrenome".
- Ordenar os estudantes pelo sobrenome e depois pela data de nascimento.
SELECT DISTINCT
CONCAT(first_name, ' ', last_name) AS full_name,
birth_date
FROM students
ORDER BY last_name, birth_date;
Resultado:
| full_name | birth_date |
|---|---|
| Maria Chi | 2000-06-20 |
| Alex Lin | 2001-03-15 |
| Anna Song | 1999-10-10 |
Fica ligado: dois registros iguais do estudante "Alex Lin" viraram só uma linha, e a ordenação foi feita primeiro pelo sobrenome e depois pela data de nascimento.
Exercício prático
Usa o que você aprendeu hoje pra resolver essa tarefa:
Tarefa: Você tem uma tabela products com os seguintes dados:
| product_id | category | product_name | price |
|---|---|---|---|
| 1 | Eletrônica | Telefone | 50000 |
| 2 | Roupas | Jaqueta | 8000 |
| 3 | Eletrônica | Notebook | 70000 |
| 4 | Roupas | Jaqueta | 8000 |
- Crie uma coluna
formatted_productondeproduct_nameé juntado com a categoria usando um hífen, tipo:Telefone - Eletrônica. - Remova combinações duplicadas de
product_nameecategory. - Ordene os produtos pela categoria e depois pelo preço (do mais barato pro mais caro).
Aqui vai uma estrutura de query pra você usar:
SELECT DISTINCT
CONCAT(product_name, ' - ', category) AS formatted_product,
price
FROM products
ORDER BY category, price ASC;
Tenta imaginar sozinho como ficaria o resultado dessa query!
Usar as funções CONCAT(), DISTINCT e ORDER BY deixa os dados muito mais legíveis e organizados, o que é super importante em projetos e tarefas reais. Pratica bastante pra entender como combinar tudo isso!
GO TO FULL VERSION