Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

1
resposta

Minha solução desconto por dias de hospedagem

DELIMITER $$

CREATE FUNCTION CalculaDescontoPorDias(totalDias INT)
RETURNS VARCHAR(5)
DETERMINISTIC
BEGIN
DECLARE desconto VARCHAR(5);

IF totalDias BETWEEN 4 AND 6 THEN
    SET desconto = '5%';
ELSEIF totalDias BETWEEN 7 AND 9 THEN
    SET desconto = '10%';
ELSEIF totalDias >= 10 THEN
    SET desconto = '15%';
ELSE
    SET desconto = '0%';
END IF;

RETURN desconto;

END$$

DELIMITER ;
-- Chamada da função para todos os clientes listagem completa
SELECT
a.cliente_id,
c.nome AS NomeCliente,
a.data_inicio,
a.data_fim,
DATEDIFF(a.data_fim, a.data_inicio) AS TotalDias,
CalculaDescontoPorDias(DATEDIFF(a.data_fim, a.data_inicio)) AS Desconto
FROM alugueis a
JOIN clientes c ON a.cliente_id = c.cliente_id;
-- ORDER BY TotalDias DESC;

-- Para um Um cliente específico
SELECT
a.cliente_id,
c.nome AS NomeCliente,
a.data_inicio,
a.data_fim,
DATEDIFF(a.data_fim, a.data_inicio) AS TotalDias,
CalculaDescontoPorDias(DATEDIFF(a.data_fim, a.data_inicio)) AS Desconto
FROM alugueis a
JOIN clientes c ON a.cliente_id = c.cliente_id
WHERE a.cliente_id = '1000'; -- informe o ID do cliente desejado

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Paulo Sergio! Como vai?

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

Do jeito que você explicou, sua função CalculaDescontoPorDias está bem estruturada e facilita a visualização dos descontos aplicados conforme os dias de hospedagem. Notei que você também incluiu exemplos de chamadas tanto para todos os clientes quanto para um cliente específico, o que ajuda a testar diferentes cenários.

Uma dica interessante para o futuro é usar CAST para retornar valores numéricos se precisar fazer cálculos depois, por exemplo:


SELECT CAST('5' AS UNSIGNED) + 10 AS Resultado;

Esse código transforma a string '5' em número e soma 10, retornando 15.

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

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