1
resposta

Mão na massa: duração média de estadias (Resolução)

DELIMITER $$ 
CREATE FUNCTION CalculaDuracaoMediaEstadias()
RETURNS FLOAT
DETERMINISTIC
BEGIN
    DECLARE MediaDuracao FLOAT;
    SELECT ROUND(AVG(DATEDIFF(data_fim,data_inicio))) INTO MediaDuracao FROM alugueis;
    RETURN MediaDuracao;
END$$
DELIMITER ;

SELECT CalculaDuracaoMediaEstadias();
1 resposta

Oi, Amanda! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você criou corretamente uma função no MySQL utilizando CREATE FUNCTION, além de aplicar AVG() junto com DATEDIFF() para calcular a média da duração das estadias.

Uma dica interessante para o futuro é utilizar também a função IFNULL() para evitar que a função retorne NULL caso não existam registros na tabela. Veja este exemplo:


SELECT IFNULL(AVG(DATEDIFF(data_fim,data_inicio)),0) INTO MediaDuracao
FROM alugueis;

Nesse exemplo, IFNULL() garante que, se a média retornar NULL, o valor 0 será utilizado no lugar. Isso ajuda a deixar a função mais segura quando a tabela ainda não possui dados.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Para saber mais:

Sugestão de conteúdo:

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!