---
# System prepended metadata

title: Exercícios de Backend 14/07/2020

---

# Exercícios de Backend 14/07/2020


Gostei de praticar os exercícios, ajudaram a desenvolver meu raciocínio lógico.

Antes, quero dizer que utilizei o código abaixo para tranformar a coluna 'andares' de string para inteiro. Isso, ajudou na resolução mais rápida dos execícios, mas da forma anterior também seria possível solucionar os excecícios, apenas seria preciso um código um pouco diferente.

```sql
UPDATE imoveis SET andar = '0' WHERE andar = '-';
ALTER TABLE imoveis ALTER COLUMN andar TYPE integer USING (trim(andar)::integer);
```

## Resolução dos exercícios



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.

```sql
SELECT 
    COUNT(*) 
FROM 
    imoveis 
WHERE 
        cidade = 'São Paulo' 
    AND (andar = 3 OR andar = 4) 
    AND total <= 200000;
```


Qual é a media de aluguel e condomínio dos imóveis do exercício 1 em reais? 

```sql
SELECT 
    (TRUNC(AVG(aluguel / 100),2)) AS media_aluguel, 
    (TRUNC(AVG(condominio / 100),2)) AS media_condominio
FROM 
    imoveis 
WHERE 
    cidade = 'São Paulo' 
    AND (andar = 3 OR andar = 4) 
    AND total <= 200000;
```
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?

```sql
SELECT 
COUNT(*) 
FROM 
    imoveis 
WHERE 
    (cidade = 'São Paulo' 
        OR cidade = 'Rio de Janeiro' 
        OR cidade = 'Belo Horizonte')  
    AND (andar = 3 
        OR andar = 4) 
    AND total <= 200000;
```

Assumindo o exercício anterior, quais seriam as médias de aluguel e condomínio?

```sql
SELECT 
    (TRUNC(AVG(aluguel / 100),2)), 
    (TRUNC(AVG(condominio / 100),2)) 
FROM 
    imoveis 
WHERE 
    (cidade = 'São Paulo' 
        OR cidade = 'Rio de Janeiro' 
        OR cidade = 'Belo Horizonte') 
    AND (andar = 3 
        OR andar = 4) 
    AND total <= 200000;
```


Quanto apartamentos existem listados em São Paulo no total?

```sql
SELECT count(andar) FROM imoveis WHERE cidade = 'São Paulo' AND andar != 0;
```


Quantas casas exitem listadas em São Paulo?

```sql
SELECT count(andar) FROM imoveis WHERE cidade = 'São Paulo' AND andar = 0;
```

Quantos imóveis existem por cidade no total?

```sql
SELECT DISTINCT cidade, (COUNT(*)) AS total FROM imoveis GROUP BY cidade ORDER BY total DESC;
```


Quantos imóveis existem por cidade que possuem dois banheiros ou mais e que aceitem animais? 

```sql
SELECT DISTINCT cidade, (COUNT(cidade)) AS total FROM imoveis WHERE banheiros >= 2 AND animais = TRUE GROUP BY cidade;
```


Qual a média de preço de aluguel por cidade, assumindo as restrições do exercício 8?

```
SELECT DISTINCT cidade, (TRUNC(AVG(aluguel / 100),2)) AS media_aluguel FROM imoveis WHERE banheiros >= 2 AND animais = TRUE GROUP BY cidade;
```

Qual a média de preço de condomínio por cidade, assumindo as restrições do exercício 8?

```sql
SELECT DISTINCT cidade, (TRUNC(AVG(condominio / 100),2)) AS media_condominio FROM imoveis WHERE banheiros >= 2 AND animais = TRUE GROUP BY cidade;
```


Gabarito de 9 e 10 não assumindo as restrições do exercício anterior:

```sql
SELECT DISTINCT cidade, (TRUNC(AVG(aluguel / 100),2)) AS media_aluguel, (TRUNC(AVG(condominio / 100),2)) AS media_condominio FROM imoveis GROUP BY cidade;
```


Existem CASAS mobiliadas que aceitam animais e possuem 3 banheiros ou mais e 3 quartos ou mais na cidade de Campinas? Se sim, qual a média de valor total?

```sql
SELECT (TRUNC(AVG(total / 100),2)) FROM imoveis WHERE andar = 0 AND mobilias = TRUE AND animais = TRUE AND banheiros >= 3 AND quartos >= 3 AND cidade = 'Campinas';
```


Existem apartamentos que possuem 60 ou menos de área e possuem 3 banheiros? Se sim, qual a média de valores?

```sql
SELECT (TRUNC(AVG(total / 100),2)) FROM imoveis WHERE andar >= 1 AND area <= 60 AND banheiros = 3;
```

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

```sql
SELECT COUNT(*) AS total FROM imoveis WHERE 
(cidade = 'São Paulo' AND andar >= 1 AND banheiros >= 4 AND animais = TRUE AND mobilias = FALSE AND total <= 300000) OR
(cidade = 'Campinas' AND andar = 0 AND banheiros >= 3 AND animais = TRUE AND mobilias = FALSE AND total <= 250000) OR 
(cidade = 'Belo Horizonte' AND andar = 0 AND banheiros = 2 AND animais = TRUE AND mobilias = TRUE AND total <= 200000);

```

Quais os maiores e menores valores totais para apartamentos por cidade?

```sql
SELECT DISTINCT cidade, (MIN(total) / 100) AS minimo, (MAX(total) /100) AS maximo FROM imoveis WHERE andar >= 1 GROUP BY cidade;
```

Quais são as opções de andares listados? Qual o maior andar listado?

```sql
SELECT DISTINCT cidade, MAX(andar) as maior_andar FROM imoveis GROUP BY cidade;
```




