# 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; ```