0
respostas

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

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora