# #Back-end - A4 - 14/07
###### Aluno: Pedro Ciccone
###### tags: `Back-end`
**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?
```
SELECT
COUNT(*)
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND
total < 200000
AND
(andar = '3' OR andar = '4');
```
**2.** Qual é a media de aluguel e condomínio dos imóveis do exercício 1 em reais?
```
SELECT
AVG(aluguel)::REAL, AVG(condominio)::REAL
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND
total < 200000
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?
```
SELECT
COUNT(*)
FROM
imoveis
WHERE
(cidade = 'São Paulo' OR cidade = 'Belo Horizonte' OR cidade = 'Rio de Janeiro')
AND
total < 200000
AND
(andar = '3' OR andar = '4');
```
**4.** Assumindo o exercício anterior, quais seriam as médias de aluguel e condomínio?
```
SELECT
AVG(aluguel)::REAL, AVG(condominio)::REAL
FROM
imoveis
WHERE
(cidade = 'São Paulo' OR cidade = 'Belo Horizonte' OR cidade = 'Rio de Janeiro')
AND
total < 200000
AND
(andar = '3' OR andar = '4');
```
**5.** Quantos apartamentos existem listados em São Paulo no total?
```
SELECT
COUNT(*)
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND
andar >= '1';
```
**6.** Quantas casas exitem listadas em São Paulo?
```
SELECT
COUNT(*)
FROM
imoveis
WHERE
cidade = 'São Paulo'
AND
andar = '-';
```
**7.** Quantos imóveis existem por cidade no total?
```
SELECT DISTINCT
cidade as Cidade, (COUNT(cidade)) as Imóveis
FROM
imoveis
GROUP BY
cidade;
```
**8.** Quantos imóveis existem por cidade que possuem dois banheiros ou mais e que aceitem animais?
```
SELECT
cidade as Cidade,
(COUNT(cidade)) as Imóveis
FROM
imoveis
WHERE
banheiros >= '2'
AND animais = TRUE
GROUP BY
cidade;
```
**9.** Qual a média de preço de aluguel por cidade, assumindo as restrições do exercício 8?
**10.** Qual a média de preço de condomínio por cidade, assumindo as restrições do exercício 8?
Respostas **9** e **10**:
```
SELECT
cidade as Cidade,
TRUNC(AVG(aluguel / 100), 2) as Aluguel,
TRUNC(AVG(condominio / 100), 2) as Condomínio
FROM
imoveis
WHERE
banheiros >= '2'
AND animais = TRUE
GROUP BY
cidade;
```
**11.** 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?
```
SELECT
TRUNC(AVG(total / 100),2)
FROM
imoveis
WHERE
cidade = 'Campinas'
AND andar = '-'
AND animais = TRUE
AND mobilias = TRUE
AND banheiros >= '3'
AND quartos >= '3';
```
**12.** Existem apartamentos que possuem 60 ou menos de área e possuem 3 banheiros? Se sim, qual a média de valores totais?
```
SELECT
TRUNC(AVG(total / 100),2)
FROM
imoveis
WHERE
andar <> '-'
AND area <= 60
AND banheiros = '3';
```
**13.** Com as seguintes restrições:
* Se em São Paulo, apartamentos de 4 banheiros ou mais, aceitam animais e 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.
```
SELECT
*
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?
```
SELECT
cidade as Cidade,
MAX(total) / 100 as Máximos,
MIN(total) / 100 as Mínimos
FROM
imoveis
WHERE
andar <> '-'
GROUP BY
cidade;
```
**15.** Quais são as opções de andares listados? Qual o maior andar listado?
```
SELECT
MAX(andar::INTEGER)
FROM
imoveis
WHERE
andar <> '-';
```