# Exercício Aula 4 - Backend
## Instruções:
1. Obtenha o conjunto de dados (dataset.txt ou dataset.sql) aqui: https://drive.google.com/drive/folders/1UkFYuemcgUoV3rRJz55OTjA7LAGz9v1u
2. Acesse o https://www.db-fiddle.com
3. Copie (CTRL + C) o conteúdo desses arquivos por completo e cole (CTRL + V)
dentro da seçcão `SQL SCHEMA` (grupo a esquerda) `DB Fiddle`.
4. Rode essa atualização
```sql
UPDATE imoveis SET andar = '0' WHERE andar = '-';
ALTER TABLE imoveis ALTER COLUMN andar TYPE integer USING (trim(andar)::integer);
```
6. Leia os exercícios e responda-os!
## Lista de Exercícios
1. Para a cidade de São Paulo, busque por todos os imóveis que sejam no terceiro ou no quarto andar e que custem no total até R$ 2000,00. Quantos imóveis entram nessa restrição? Gabarito: `80`;
```sql
SELECT
COUNT(*)
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND total <= (2000*100)
AND (andar = '3' OR andar = '4')
```
2. Qual é a media de aluguel e condomínio dos imóveis do exercício 1 em reais? Gabarito: `R$ 1244.06 e R$ 338.90, respectivamente`;
```sql
SELECT
TRUNC(AVG(aluguel/100),2) as aluguel ,
TRUNC(AVG(condominio/100),2) as condominio
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND total <= (2000*100)
AND (andar = '3' OR andar = '4')
```
3. Agora, se a gente considerasse Rio de Janeiro e Belo Horizonte como possibilidades junto com de São Paulo, sob as mesmas condições, quantos imóveis teríamos no total? Gabarito: `283 imóveis`
```sql
SELECT
COUNT(*)
FROM
imoveis
WHERE
total <= (2000*100)
AND (andar = '3' OR andar = '4')
AND (cidade = 'São Paulo' OR cidade = 'Belo Horizonte' OR cidade = 'Rio de Janeiro')
```
4. Assumindo o exercício anterior, quais seriam as médias de aluguel e condomínio? Gabarito: `R$ 1125.33 e R$ 331.90, respectivamente`
```sql
SELECT
TRUNC(AVG(aluguel/100),2) as aluguel,
TRUNC(AVG(condominio/100),2) as condominio
FROM
imoveis
WHERE
total <= (2000*100)
AND (andar = '3' OR andar = '4')
AND (cidade = 'São Paulo' OR cidade = 'Belo Horizonte' OR cidade = 'Rio de Janeiro')
```
5. Quanto apartamentos existem listados em São Paulo no total? Gabarito: `4273 apartamentos`
```sql
SELECT
COUNT(*)
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND andar > '0'
```
6. Quantas casas exitem listadas em São Paulo? Gabarito: `1614 casas.`
```sql
SELECT
COUNT(*)
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND andar = '0'
```
7. Quantos imóveis existem por cidade no total? Gabarito:
| Cidade | Imóveis |
| -------- | -------- |
| São Paulo | 5887 |
| Campinas | 853 |
| Belo Horizonte | 1258 |
| Rio de Janeiro | 1501 |
| Porto Alegre | 1193 |
```sql
SELECT
cidade, COUNT(*) as imoveis
FROM
imoveis
GROUP BY cidade
```
8. Quantos imóveis existem por cidade que possuem dois banheiros ou mais e que aceitem animais? Gabarito:
| Cidade | Imóveis |
| -------- | -------- |
| São Paulo | 3128 |
| Campinas | 360 |
| Belo Horizonte | 677 |
| Rio de Janeiro | 636 |
| Porto Alegre | 481 |
```sql
SELECT
cidade, COUNT(*) as imoveis
FROM
imoveis
WHERE
banheiros >= '2'
AND animais = TRUE
GROUP BY cidade
```
9. Qual a média de preço de aluguel por cidade?
10. Qual a média de preço de condomínio por cidade?
Gabarito de 9 e 10:
| Cidade | Aluguel | Condomínio |
| -------- | -------- | -------- |
| São Paulo | 6007.14 | 1536.79 |
| Campinas | 3656.28 | 840.64 |
| Belo Horizonte | 4816.42 | 657.06 |
| Rio de Janeiro | 4514.04 | 3128 |
| Porto Alegre | 1419.07 | 632.71 |
```sql
SELECT
cidade,
TRUNC((AVG(aluguel)/100),2) as aluguel,
TRUNC((AVG(condominio)/100),2) as condominio
FROM
imoveis
GROUP BY cidade
```
11. Existem CASAS mobiliadas que aceitam animais e possuem 3 banheiros e 3 quartos na cidade de Campinas? Se sim, qual a média de valor total? Gabarito: `Sim, R$ 8820.00`
```sql
SELECT
TRUNC(AVG(total/2),2) as media
FROM
imoveis
WHERE
andar = '0'
AND mobilias = TRUE
AND animais = TRUE
AND banheiros = '3'
AND quartos = '3'
AND cidade = 'Campinas'
```
12. Existem apartamentos que possuem 60 ou menos de área e possuem 3 banheiros? Se sim, qual a média de valores? Gabarito: `Sim, R$ 2192.75`
```sql
SELECT
TRUNC(AVG(total/2),2) as media
FROM
imoveis
WHERE
area <= '60'
AND banheiros = '3'
AND andar > '0'
```
13. Com as seguintes restrições:
- Se em São Paulo, apartamentos de 4 banheiros ou mais, aceitam animais e não mobiliados que estejam abaixo de R$ 3000 reais no total;
- Se em Campinas, casas de 3 banheiros ou mais, que aceitam animais e não mobiliados que custam até R$ 2500 no total;
- Se em Belo Horizonte, casas de 2 banheiros que aceitam animais, mobiliados de até R$ 2000
Responda quantos apartamentos existem no total utilizando apenas uma consulta.
Gabarito: `3 imóveis`
```sql
SELECT
COUNT(id) as total
FROM
imoveis
WHERE
(cidade = 'São Paulo' AND andar > '-' AND banheiros >= '4' AND animais = TRUE AND mobilias = FALSE AND total <= '300000')
OR
(cidade = 'Campinas' AND andar = '-' AND banheiros >= '3' AND animais = TRUE AND mobilias = FALSE AND total <= '250000')
OR
(cidade = 'Belo Horizonte' AND andar = '-' AND banheiros = '2' AND animais = TRUE AND mobilias = TRUE AND total <= '200000');
```
14. Quais os maiores e menores valores totais para apartamentos por cidade?
Gabarito:
| Cidade | Máximos | Mínimos |
| -------- | -------- | -------- |
| São Paulo | 316900 | 803 |
| Campinas | 20560 | 711 |
| Belo Horizonte | 1120000 | 545 |
| Rio de Janeiro | 95610 | 507 |
| Porto Alegre | 32750 | 733 |
```sql
SELECT DISTINCT
cidade, MAX(total/100) as Maximos, MIN(total/100) as Minimos
FROM
imoveis
WHERE
andar > '0'
GROUP BY cidade
```
15. Quais são as opções de andares listados? Qual o maior andar listado?
Gabarito: `301 é o maior andar`
```sql
SELECT MAX(andar) FROM imoveis
```