geovani.cristofolini
Members-
Total de itens
7 -
Registro em
-
Última visita
Tudo que geovani.cristofolini postou
-
Criar função para cálculo de juros compostos
geovani.cristofolini respondeu ao tópico de geovani.cristofolini em MySQL
Ótimo, deu certo! obrigado! select 10000 * EXP(SUM(LOG(1 + (1 * (percentual/100))))) from tab_indice where sigla = 'INPC' and data between 20190901 and 20191101- 3 respostas
-
- juros
- juros compostos
-
(e mais 3 )
Tags:
-
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.
- 3 respostas
-
- juros
- juros compostos
-
(e mais 3 )
Tags:
-
Criar função para cálculo de juros compostos
geovani.cristofolini respondeu ao tópico de geovani.cristofolini em MySQL
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)- 3 respostas
-
- juros
- juros compostos
-
(e mais 3 )
Tags: