728x90

https://stepby-yun.tistory.com/194

 

MAX MIN order by limit 차이 뭘 쓸지

https://stepby-yun.tistory.com/193 한시간씩 이자율 넣기 while문 사용, update,order by limit https://stepby-yun.tistory.com/192?category=554522 mysql while 여러시도.. https://stepby-yun.tistory.com/1..

stepby-yun.tistory.com

지난 시간

max나 min쓰자~

 

 

 

이번에는 줄어드는 계산식

 

이전코드에서 
빼면 되겠거니~~했는데!

오잉

 

아 이전에는 deposit_amount가 점점 커져서 

MIN 최소값에 이자율곱해서 이자액 구했는데

이제는 줄어들어서 최대값 사용해서 이자금액 구해야하는구나

 

MAX로 바꿈

음...

아 최대값에서 빼주니까 안줄어드는구나

 

최소값(마지막행)에서 빼주기로 변경

 

 

 

굿굿~

 

이자율만 수정하면 끝

 

 

use test;
truncate sequence;


set @setTime = (select subtime(now(),'00:02:00'));

insert into sequence (name,deposit_date,deposit_amount,interest_amount) values ('이소윤',@setTime,10000000,0);

drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while (select MAX(id) from sequence) < 10 do


INSERT INTO sequence (name,deposit_date,deposit_amount,interest_amount) 
select 
(select MIN(name) from sequence),
date_add((select MAX(deposit_date) from sequence),INTERVAL 1 hour),
((select MIN(deposit_amount) from sequence) - (select MAX(interest_amount) from sequence)),
(select MAX(deposit_amount) from sequence)* 0.02;


end while;
end //
delimiter ;

call pro();


select * from sequence;

 

 

 

 

 

 

이거는 order by 랑 섞어서 쓴거. 

use test;
truncate sequence;


set @setTime = (select subtime(now(),'00:02:00'));

insert into sequence (name,deposit_date,deposit_amount,interest_amount) values ('이소윤',@setTime,10000000,0);

drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while (select MAX(id) from sequence) < 10 do

INSERT INTO sequence (name,deposit_date,deposit_amount,interest_amount) 
select 
(select MIN(name) from sequence),
date_add((select MAX(deposit_date) from sequence),INTERVAL 1 hour),
((select deposit_amount from sequence where  deposit_amount order by id desc limit 1) - (select MAX(interest_amount) from sequence)),
(select deposit_amount from sequence where id =1)* 0.02;

end while;
end //
delimiter ;

call pro();

select * from sequence;

똑같음

 

 

 

 

 

이제 예산이 0 될때까지 해볼게

 

 

끝~

 

 

+

 

참고로 >= 0로 해봤는데

0보다 크거나 같다고 하니까 에러뜸

 

 

이거보니 타입이 unsigned로 되어있는데 

음수값이 나오려고 해서 에러뜨는거라함

 

아하 deposit_amount가 0일때 while문을 돌리면

interest_amount 값을 0에서빼게 되니까

음수값이 들어가게 되는구나

 

https://wwwnghks.tistory.com/122

 

[Mysql] SQL 오류 (1690): BIGINT UNSIGNED value is out of range in 에러 발생시

SQL 오류 (1690): BIGINT UNSIGNED value is out of range in.... 위의 에러 발생 이유는 아래와 같이 컬럼명의 타입이 unsigned 로 되어있고, 음수의 값이 발생되는 경우 발생된다. select (컬럼명 - 100) from..

wwwnghks.tistory.com

 

728x90

+ Recent posts