Ir para conteúdo

geovani.cristofolini

Members
  • Total de itens

    7
  • Registro em

  • Última visita

Posts postados por geovani.cristofolini


  1. Olá pessoal, consegui implementar, segue o código que atendeu a minha necessidade.

     

    Criar tabela:

    create table tab_indice(sigla varchar(50), data date, percentual float);

     

    Inserir alguns registros:

    insert into tab_indice values('INPC',20190801,0.12);
    insert into tab_indice values('INPC',20190901,-0.05);
    insert into tab_indice values('INPC',20191001,0.04);
    insert into tab_indice values('INPC',20191101,0.54);
    insert into tab_indice values('INPC',20191201,1.22);

    Criar a função:

    CREATE FUNCTION calcIndice(pvalor float, pindice varchar(50), pdata_inicial date, pdata_final date) returns float
    begin
    
    	DECLARE valor_reajustado, i, x float DEFAULT 0;
    	
    	DECLARE finished INTEGER DEFAULT 0;
    	
    	DECLARE curReajuste CURSOR FOR 
    		SELECT percentual 
    		  from tab_indice 
    		 where sigla = pindice 
    		       and data between pdata_inicial and pdata_final;
    	        
    	DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;	
    	
    	OPEN curReajuste;
    	
    	getIndice: LOOP
    	    FETCH curReajuste INTO i;
    	    IF finished = 1 THEN 
    	        LEAVE getIndice;
    	    END IF;
    	    IF x = 0 then SET valor_reajustado = pvalor + (pvalor * (i/100));
    	             else SET valor_reajustado = valor_reajustado + (valor_reajustado * (i/100));
    	    end if;
    	    set x = x + 1;
    	    
    	END LOOP getIndice;
    	
    	CLOSE curReajuste;
    	
    	return valor_reajustado;
    
    end;

     

    Chamar a função no select:

    SELECT calcIndice(10000,'INPC', 20190901, 20191101)

     


  2. Bom dia pessoal,

     

    Preciso fazer uma consulta SQL que aplica o cálculo de juros compostos (juros sobre juros).  https://www.significados.com.br/juros-compostos/

     

    Valor Inicial:  R$ 1.000,00  
         
    Mês Juros Reajuste
    01/08/2019 0,12%  R$   1.001,20
    01/09/2019 -0,05%  R$   1.000,70
    01/10/2019 0,04%  R$   1.001,10
    01/11/2019 0,54%  R$   1.006,51
    01/12/2019 1,22%  R$   1.018,78
         
    Valor Reajuste:  R$ 1.018,78  

     

    Creio que apenas usando select não seja possível, porque necessita de uma estrutura de repetição para aplicar o resultado do primeiro mês em outro mês e assim sucessivamente.

     

    Penso que devo fazer uma função, onde passaria como parâmetro, o valor inicial, data inicial e data final.


    Como não tenho conhecimento em desenvolvimento de função no mysql, gostaria de um exemplo, assim acredito que conseguido implementar.


    Preciso de um exemplo de função, que faz um loop girando em todos os registros da tabela de juros, filtrando os meses conforme data inicial e final, para cada registro, aplicaria o percentual de reajuste. No primeiro mês aplicaria o percentual em cima do valor inicial, nos proximos meses aplicaria o percentual em cima do reajuste anterior.

     

    Alguém já fez essa cálculo? 

     

    Estou usando o MySQL versão 5.1.73.

     

     

     

     

     

     

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.