Calculando juros com SQL

Neste artigo vamos ver alguns exemplos de como calcular juros, utilizando o SQL Server e o MySQL.

Juros é o rendimento que se obtém quando se empresta dinheiro por um determinado período. 

Vamos ver duas formas de calcular juros, o juros simples e o juros composto. O juros é considerado simples quando a taxa de juros é definida a partir do valor inicial do empréstimo.

Já no sistema de juros composto, se define um percentual de taxa de juros de acordo com cada período, sendo este novo valor adicionado ao valor inicial para que seja feito um novo cálculo no período seguinte. Isto também recebe o nome de juros sobre juros.

Vamos começar com o juros simples. Primeiro, vamos criar uma tabela para guardar valores, a taxa de juros e a quantidade de meses.

//MySQL

CREATE TABLE IF NOT EXISTS `juros` (

  `id` int(11) NOT NULL,

  `valor` float NOT NULL,

  `meses` int(11) NOT NULL,

  `juros_mes` float NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

//SQL SERVER

CREATE TABLE [dbo].[juros](

[id] [int] IDENTITY(1,1) NOT NULL,

[valor] [float] NULL,

[meses] [int] NULL,

[juros_mes] [float] NULL,

 CONSTRAINT [PK_juros] PRIMARY KEY CLUSTERED 

([id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]

Depois de criar as tabelas, vamos inserir alguns registros.

insert into juros (valor, meses, juros_mes) values (10000, 10, 10);

insert into juros (valor, meses, juros_mes) values (15000, 18, 0.78);

insert into juros (valor, meses, juros_mes) values (25000, 24, 5.78);

insert into juros (valor, meses, juros_mes) values (35000, 24, 7);

insert into juros (valor, meses, juros_mes) values (18000, 36, 13);

insert into juros (valor, meses, juros_mes) values (12000, 36, 11.5);

Para calcular os juros simples, podemos fazer esta consulta

select valor, meses, juros_mes, (valor * (juros_mes/100) * meses) as juros_simples from juros

Para saber o valor final (valor inicial + juros de todos os períodos), podemos fazer desta forma:

select valor, meses, juros_mes, (valor * (juros_mes/100) * meses) as juros_simples, valor + (valor * (juros_mes/100) * meses) as total_com_juros_simples from juros

Utilizando a mesma tabela, vamos fazer o cálculo dos juros compostos. Utilizando a função POWER, podemos elevar o juros de cada período a uma determinada potência, que será a quantidade de meses desejada.

 

SELECT valor,

       meses,

       (valor * POWER(1 + (juros_mes / 100), meses)) - valor AS juros,

       valor * POWER(1 + (juros_mes / 100), meses) AS total_com_juros_compostos

from juros

 

Agora vamos ver outro tipo de cálculo, a seguir vamos fazer o cálculo da inflação acumulada num determinado período.

Inflação refere-se a um aumento contínuo e generalizado dos preços em uma economia.

No exemplo a seguir, vamos ver como calcular a inflação acumulada de um determinado período, para isso, vamos utilizar o índice IPC de inflação do Brasil, medida desde o ano 2000 até 2019. Primeiro, vamos criar uma tabela para guardar estas informações.

//MYSQL

CREATE TABLE IF NOT EXISTS `inflacao` (

  `id` int(11) NOT NULL,

  `ano` int(11) NOT NULL,

  `valor` float NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

//SQL SERVER

CREATE TABLE [dbo].[inflacao](

[id] [int] IDENTITY(1,1) NOT NULL,

[ano] [int] NULL,

[valor] [float] NULL,

 CONSTRAINT [PK_inflacao] PRIMARY KEY CLUSTERED 

([id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]

Depois de criar a tabela, vamos adicionar a inflação do período.

INSERT INTO inflacao (ano, valor) VALUES (2019,4.31);

INSERT INTO inflacao (ano, valor) VALUES (2018,3.75);

INSERT INTO inflacao (ano, valor) VALUES (2017,2.95);

INSERT INTO inflacao (ano, valor) VALUES (2016,6.29);

INSERT INTO inflacao (ano, valor) VALUES (2015,10.67);

INSERT INTO inflacao (ano, valor) VALUES (2014,6.41);

INSERT INTO inflacao (ano, valor) VALUES (2013,5.91);

INSERT INTO inflacao (ano, valor) VALUES (2012,5.84);

INSERT INTO inflacao (ano, valor) VALUES (2011,6.50);

INSERT INTO inflacao (ano, valor) VALUES (2010,5.91);

INSERT INTO inflacao (ano, valor) VALUES (2009,4.31);

INSERT INTO inflacao (ano, valor) VALUES (2008,5.90); 

INSERT INTO inflacao (ano, valor) VALUES (2007,4.46); 

INSERT INTO inflacao (ano, valor) VALUES (2006,3.14); 

INSERT INTO inflacao (ano, valor) VALUES (2005,5.69); 

INSERT INTO inflacao (ano, valor) VALUES (2004,7.60);

INSERT INTO inflacao (ano, valor) VALUES (2003,9.30); 

INSERT INTO inflacao (ano, valor) VALUES (2002,12.53);

INSERT INTO inflacao (ano, valor) VALUES (2001,7.67); 

INSERT INTO inflacao (ano, valor) VALUES (2000,5.97); 

Para calcular a inflação acumulada ano a ano, vamos utilizar a seguinte consulta:

select i1.ano, i1.valor,  (EXP(SUM(LOG(1+(i2.valor/100)))) -1)*100 as acumulado

from inflacao I1

inner join inflacao I2 on i1.ano >=i2.ano

group by i1.ano, i1.valor

order by i1.ano, i1.valor

Perceba que neste exemplo utilizamos duas funções matemáticas, primeiro fizemos a soma dos logaritmos (LOG) dos valores acumulados em cada ano. Sobre este resultado, fizemos a exponenciação. Utilizando as funções de logaritmo e exponenciação, é possível obter as taxas de juros de forma acumulada.

 

 

Quer conferir mais dicas sobre banco de dados? Clique aqui e veja mais dicas!

Veja outros conteúdos que podem ser de seu interesse