---
# System prepended metadata

title: "\U0001F4D8 Prova de SQL — 30/09"

---

# 📘 Prova de SQL — 30/09

**Banco:** PostgreSQL  
**Imagem Docker:** `leogloriainfnet/prova30-09`

As tabelas já estão carregadas no banco de dados:
- `carros`  
- `motos`  
- `vendas`

> **Regras:**  
> - Responda todas as questões usando **apenas SQL**.  
> - Não altere as tabelas originais (exceto quando a questão pedir criação explícita de objetos como view/materialized view/índices).  
> - Entregue um arquivo `.pdf` com todas as queries usadas (cada questão numerada) e execução..  
> - Nomes de objetos adicionais (views, índices, materialized views) devem ser claros e consistentes.

---

## 🚀 Como rodar o ambiente (local)

```bash
docker run -d --name prova-sql  -e POSTGRES_PASSWORD=123456   leogloriainfnet/prova30-09
```

```bash
docker exec -it <container_id> psql -U postgres
```

---

## 📝 Questões

**Questão 1**  
Liste carros da Toyota ou Honda fabricados a partir de 2018.  

**Questão 2**  
Liste carros da categoria 'SUV' com preço entre 100.000 e 250.000 e câmbio = 'Automático'.  

**Questão 3**  
Liste motos com cilindrada igual a 600, 900, 1000 ou 1200.  

**Questão 4**  
Liste carros com cor diferente de 'Preto' e diferente de 'Branco' e quilometragem menor que 50.000.  

**Questão 5**  
Liste motos cujo modelo começa com 'Ninja' ou começa com 'gsx'.  

**Questão 6**  
Liste carros de marcas BMW, Mercedes, Audi ou Volkswagen da categoria Sedan ou Esportivo com ano entre 2015 e 2025.  

**Questão 7**  
Liste carros cujo modelo contenha 'Class' ou 'Series' e preço maior que 150.000.  

**Questão 8**  
Liste motos com ano maior ou igual a 2015 e (preço menor que 20.000 ou cilindrada menor ou igual a 300).  

**Questão 9**  
Liste carros cuja marca não seja Fiat, Volkswagen ou Chevrolet e (categoria seja Esportivo ou Coupé).  

**Questão 10**  
Liste carros cuja cor começa com 'Pr' ou 'Ci', com ano entre 2010 e 2025, e preço diferente de 50000 e diferente de 100000.  

**Questão 11**  
Monte uma consulta que traga todos os veículos (carros e motos) com marca, modelo, ano, preco, tipo. Depois, justifique a escolha de UNION ou UNION ALL.  

**Questão 12A**  
Garanta que a consulta da questão 11 esteja sempre disponível e refletindo automaticamente qualquer alteração feita nas tabelas de carros ou motos. Você usaria View ou Materialized View? Justifique sua escolha.  

**Questão 12B**  
Implemente a solução escolhida, criando o objeto correspondente no banco de dados.  

**Questão 13**  
Liste todos os carros que possuem airbags maiores ou iguais a 4 usando o campo `dados`.  

**Questão 14**  
Liste todos os carros que sejam blindados verificando o conteúdo do campo `dados`.  

**Questão 15**  
Explique o que é um índice em banco de dados e crie dois índices na tabela `motos`: um para consultas por ano e outro para consultas por preço.  

**Questão 16**  
Liste todas as vendas realizadas no ano de 2023.  

**Questão 17**  
Liste todas as vendas realizadas no mês de março de 2024.  

**Questão 18**  
Mostre o total de vendas (soma do campo `total`) agrupado por ano da data da venda.  

**Questão 19**  
Mostre a quantidade de vendas agrupada por vendedor.  

**Questão 20**  
Liste os vendedores cujo valor total vendido seja maior que 500.000.  

**Questão 21A**  
Crie uma Materialized View que consolide as vendas por mês, exibindo: mês (`date_trunc` de `data_venda`), total vendido (soma de `total`) e quantidade de vendas.  

**Questão 21B**  
Insira um novo registro na tabela `vendas` com uma data dentro de um mês já existente no conjunto de dados.  

**Questão 21C**  
Execute o refresh da materialized view criada.  

**Questão 21D**  
Faça uma consulta nessa materialized view para o mês do registro inserido e demonstre que os valores refletem a nova venda.  

**Questão 21E**  
Crie um índice sobre a materialized view para acelerar consultas pelo campo do mês.  

**Questão 22**  
Liste, agrupando por vendedor e por ano/mês da data da venda, apenas os grupos que atendam simultaneamente às condições abaixo:  
- soma do total vendido maior que 300.000;  
- quantidade de vendas maior ou igual a 20;  
- ticket médio entre 10.000 e 25.000;  
- participação de carros no faturamento maior ou igual a 60%.  

Exiba vendedor, ano/mês, total vendido, quantidade de vendas, ticket médio e percentual de carros. Ordene do maior total vendido para o menor.

---
### DML > 110 pontos  
### DL > 80 pontos
### D > 50
### ND <= 50

Boa sorte — e mantenha a curiosidade afiada.
