Em uma das atividades de SQL é apresentado a questão:
"""
Imagine que você é um(a) analista de dados trabalhando para o Gatito Petshop, uma loja especializada em produtos e serviços para pets. Recentemente, o Gatito Petshop decidiu expandir seus serviços de hospedagem para pets e agora quer analisar os dados de aluguel desses espaços para entender melhor as tendências de ocupação e otimizar seus serviços. Para isso, você precisa criar uma procedure que simplifique a análise dos dados de aluguel por região, ano e por mês, permitindo uma consulta rápida e eficiente.
Considerando a necessidade de analisar os dados de aluguel de hospedagem para pets por região, ano e mês, qual das seguintes procedures você criaria para atender a essa demanda, garantindo uma manutenção fácil e uma consulta eficiente?
"""
Na plataforma a resposta correta está como sendo o SQL,do código abaixo:
DELIMITER //
CREATE PROCEDURE analisar_alugueis_por_regiao_mes(regiao_nome VARCHAR(255))
BEGIN
SELECT
YEAR(data_inicio) AS ano,
MONTH(data_inicio) AS mes,
COUNT(*) AS total_alugueis
FROM alugueis
JOIN hospedagens ON alugueis.hospedagem_id = hospedagens.hospedagem_id
JOIN enderecos ON hospedagens.endereco_id = enderecos.endereco_id
WHERE enderecos.regiao = regiao_nome
GROUP BY ano, mes
ORDER BY ano, mes;
END//
DELIMITER ;
Porém, a tabela enderecos não tem a coluna regiao.
Seria necessário fazer um relacionamento com a tabela regioes_geograficas
DELIMITER //
CREATE PROCEDURE analisar_alugueis_por_regiao_mes(regiao_nome VARCHAR(255))
BEGIN
SELECT
YEAR(data_inicio) AS ano,
MONTH(data_inicio) AS mes,
COUNT(*) AS total_alugueis
FROM alugueis
JOIN hospedagens ON alugueis.hospedagem_id = hospedagens.hospedagem_id
JOIN enderecos ON hospedagens.endereco_id = enderecos.endereco_id
JOIN regioes_geograficas as rg on enderecos.estado = rg.estado
WHERE rg.regiao = regiao_nome
GROUP BY ano, mes
ORDER BY ano, mes;
END//
DELIMITER ;