728x90

 

목표

년 이자 4프로를 12개월로 나눠서

매월 찍히는걸로 하는건데

이름은 그대로 입금날짜는 한달씩 증가로 찍혀야함!!

 

<1차시도>

이자율 계산

 

 

INSERT INTO test.sequence (interest_amount) SELECT (deposit_amount * 0.04 /12)  from test.sequence;

 

 

 

이거 참고함 https://velog.io/@gillog/MySQL-SELECT%EB%90%9C-%EA%B2%B0%EA%B3%BC%EB%A1%9C-INSERT-%ED%95%98%EA%B8%B0

 

 

<2차시도>

한달씩 증가한 날짜 찍기

 

날짜 

https://allmana.tistory.com/7

 

[MySQL] 날짜 더하기 빼기 date_add

[MySQL] 날짜 더하기 빼기 date_add MySQL에서는 날짜를 더하고 뺄때 쓰는 함수가 있다. 바로 date_add 사용법 DATE_ADD(date, INTERVAL 계산수 계산형식) 계산형식이란 월,일,시간 중 어떤걸 더할꺼냐를 선택하

allmana.tistory.com

현재를 기준으로 1달씩 더함

select date_add(now(),INTERVAL 1 MONTH) ;

 

지금을 기준으로 식만들면 다시 재사용하기 힘듦..

 

INSERT INTO test.sequence (deposit_date) select date_add(now(),INTERVAL 1 MONTH);

 

 

 

테이블 내용 삭제하고 다시~

 

TRUNCATE

  • 테이블의 전체 데이터를 삭제
  • 테이블에 외부키(foreign key)가 없다면 DELETE보다 훨씬 빠르게 삭제됨
# 문법
TRUNCATE 테이블명

# 예제
TRUNCATE student;

https://wayhome25.github.io/mysql/2017/03/20/mysql-05-table-insert-delete-modify/

 

MySQL 05. MySQL - Table (insert, update, delete) · 초보몽키의 개발공부로그

 

wayhome25.github.io

<3차시도>

 

위에 한거 동시에 적용해보기

 

 

sequence테이블에 날짜항목, 이자액항목에   지금에 한달추가한 날짜값,  계산한 이자금액 넣는다.

 

INSERT INTO sequence (deposit_date,interest_amountselect date_add(now(),INTERVAL 1 MONTH),10000000* 0.04 /12;

 

 

 

 

숫자로 넣어서 하긴했는데 실제는 이렇게 하면 안될듯 

재사용할 수 있게 변수지정해야되지 않을까

 

 

 

 

 

<4차시도>

 

 

 

 

 

 

INSERT INTO sequence (deposit_date,interest_amount) select date_add((select deposit_date from sequence where id='1'),INTERVAL 1 MONTH),(select deposit_amount from sequence where id='1')* 0.04 /12;

 

 

where id="1"

로 첫번째 행에 있는 값을 사용하게 했다. 금액은 괜찮은데

하지만 날짜는 이전행을 기준으로 한달씩 증가되어야한다.

 

<5차시도>

 

LAG함수쓰면 될거같은데 안되네....

아 된건가?

SELECT * FROM test.sequence;
use test;
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');
INSERT INTO sequence (deposit_date,interest_amount) select date_add(now(),INTERVAL 1 MONTH),10000000* 0.04 /12;
 select deposit_date, LAG(deposit_date) over(order by deposit_date) from sequence;

 

<6차시도>

흠...

select deposit_date from sequence order by id desc limit 1;

마지막행선택함.

이렇게  마지막 행의 날짜를 선택하고 거기에 한달씩 더해주면 되지 않을까?

 


select date_add(deposit_date,INTERVAL 1 MONTH) from sequence where  deposit_date order by id desc limit 1;

오 됐다

한달 추가하겠다 마지막행으로 찾은 날짜에

 

 

 

 

 

ㅇㄴㄹㄴ

 

오됐다

 

 

INSERT INTO sequence (deposit_date,interest_amountselect date_add((select deposit_date from sequence where  deposit_date order by id desc limit 1),INTERVAL 1 MONTH),(select deposit_amount from sequence where id='1')* 0.04 /12;

 

 

 

 

<종합해보면>

 

SELECT * FROM test.sequence;
use test;
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');

 

INSERT INTO sequence (deposit_date,interest_amount) select date_add((select deposit_date from sequence where  deposit_date order by id desc limit 1),INTERVAL 1 MONTH),(select deposit_amount from sequence where id='1')* 0.04 /12;

 

<7차시도>

아 이름도 같이 들어가게끔

INSERT INTO sequence (name, deposit_date,interest_amount) 
select (select name from sequence order by id desc limit 1) ,date_add((select deposit_date from sequence where  deposit_date order by id desc limit 1),INTERVAL 1 MONTH),
(select deposit_amount from sequence where id='1')* 0.04 /12 ;

 

 

<결과>

 

 

use test;
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');
INSERT INTO sequence (name, deposit_date,interest_amount) 
select (select name from sequence order by id desc limit 1) ,date_add((select deposit_date from sequence where  deposit_date order by id desc limit 1),INTERVAL 1 MONTH),
(select deposit_amount from sequence where id='1')* 0.04 /12 ;

근데 식이 너무 더러운데..

다시 정리해보자~

728x90

+ Recent posts