목표
년 이자 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차시도>
한달씩 증가한 날짜 찍기
날짜
[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_amount) select 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_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;
<종합해보면>
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 ;
근데 식이 너무 더러운데..
다시 정리해보자~
'데이터베이스 > mySQL' 카테고리의 다른 글
mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER ) (0) | 2022.05.10 |
---|---|
mysql 변수설정 set, declare 사용하려고 하는데...흠.. (0) | 2022.05.10 |
mysql 기본 명령어 (0) | 2022.05.10 |
[mySQL 이미지 저장] BLOB말고 문자열로 하는 이유 (+string문자열 VAR / CHAR 차이) (0) | 2022.04.29 |
mysql 관계설정 hasOne,hasMany,belongsTo (0) | 2022.03.10 |