728x90

조건

 

피보나치 수열

1 1 2 3 5 8 13 ...

 

이렇게 

1분 1분 2분 3분 

지날 때마다

-2%로 이자액이 원금에서 차감되게 식 만들기 

 

 

 

 

검색통해서 피보나치 구하는 식은 썼는데 

 

시간 흐를 때마다 추가되게끔은 못함..

drop database testDB;
create database testDB;

use testDB;
create table testDB(
id INT(11)  NOT NULL AUTO_INCREMENT,                
  name VARCHAR(45) ,                        
 deposit_date DATETIME,                      
deposit_amount INT,                                   
interest_amount INT,
 CONSTRAINT testTable_PK PRIMARY KEY(id)                     
);

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

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

drop function if exists fibo_number;
DELIMITER //
CREATE FUNCTION fibo_number(n INT) RETURNS INT
DETERMINISTIC
BEGIN
	
    DECLARE f_0 INT default 0;
    DECLARE f_1 INT default 1;
    DECLARE out_fib INT;
    DECLARE i INT;
    DECLARE f_2 INT;

    SET f_0 = 0;
    SET f_1 = 1;
    SET i = 1;

    
    WHILE (i<=n) DO
   
        SET f_2 = f_0 + f_1;
        SET f_0 = f_1;
        SET f_1 = f_2;              
       SET i = i + 1;  
       SET out_fib = f_0;          
	
    END WHILE;
    	  RETURN out_fib;


END //

set @n =  (select fibo_number(6))//
select @n//

drop procedure if exists pro//
create procedure pro()
begin

while (select id from testdb order by id desc limit 1) < 10 do
INSERT INTO testdb (name,deposit_date,deposit_amount,interest_amount) 
select 
(select  MIN(name) from testdb),
date_add((select MAX(deposit_date) from testdb),INTERVAL @n minute),
((select MIN(deposit_amount) from testdb ) - (select MAX(interest_amount) from testdb)),
(select deposit_amount from testdb where id =1)* 0.02;
end while;
end //
delimiter ;

call pro();

select * from testdb;

 

https://shoark7.github.io/programming/algorithm/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%84-%ED%95%B4%EA%B2%B0%ED%95%98%EB%8A%94-5%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95.html

 

피보나치 수열 알고리즘을 해결하는 5가지 방법

Let me introduce 5 different ways to solve fibonacci algorithm

shoark7.github.io

https://hongjw1938.tistory.com/47

 

알고리즘 - Dynamic Programming(동적 계획법)

1. 개요 DP, 즉 다이나믹 프로그래밍(또는 동적 계획법)은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으

hongjw1938.tistory.com

https://stackoverflow.com/questions/69821788/create-and-call-mysql-function-to-find-fibonacci-numbers-till-n-numbers

 

Create and call MYSQL Function to find Fibonacci numbers till n numbers

My approach DELIMITER $$ CREATE FUNCTION fibonacci(num INT) RETURNS INT DETERMINISTIC BEGIN DECLARE fib1 INT DEFAULT 0; DECLARE fib2 INT DEFAULT 1; DECLARE fib3 INT DEFAULT 0; DECLA...

stackoverflow.com

 

728x90
728x90

 

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/191 mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER ) while문 해보려는데.. 나와같은..

stepby-yun.tistory.com

 

max 랑 min써서 잘들어가긴했는데

order했을때 왜 null떴나 싶어서 

다시 해봄

 

 

 

 

 

 

where 조건문을 잘못넣었네

 

 

 

 

 

 

where interest_amount 

빼니까 잘 들어감

 

 

 

 

없네

근데

다른애들은 where 있고 없고 결과값 똑같은데 뭐지

일단 확실한건 

where 조건문

인데 조건문아니고 테이블만 써서 잘못되긴함. 

 

<수정결과>

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 id from sequence order by id desc limit 1) < 10 do


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


end while;
end //
delimiter ;

call pro();




select * from sequence;

 

 

 

 

+

참고로 empty set이 무어냐

쿼리 수행 결과가 없다는 뜻

 

 

https://www.tutorialspoint.com/What-is-the-meaning-of-empty-set-in-MySQL-result-set

테이블 조건만으로는 그 값을 찾을 수 없었나봐...

 

728x90
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
728x90

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/191 mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER ) while문 해보려는데.. 나와같은..

stepby-yun.tistory.com

지난시간~

 

 

select deposit_amount where  deposit_amount order by id desc limit 1

이 order by id dec limit 1

을 사용해서 마지막행 값을 구했었다. 

 

 

우와 max로 썼더니 

null값 사라짐!

 

확실한 건 코드가 짧아져서 너무 좋음ㅋㅋㅋㅋ

구하려는 열과 테이블만 적으면 됨

 

 

 

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 MAX(deposit_amount) from sequence) + (select MAX(interest_amount) from sequence)),
(select MIN(deposit_amount) from sequence)* 0.04 /12;


end while;
end //
delimiter ;

call pro();



select * from sequence;

 

 

 

근데 둘의 차이가 뭘까? 뭘쓰는게 좋을까

 

 

단순히 테이블에서 최대값, 최소값을 찾고 싶다면

MAX() MIN() 함수 활용하는게 간단하다

 

최대값 또는 최소값을 갖는 row 열을 찾는 경우,

order by limit 1 을 사용한다.

 

 

 

 

성능으로 봤을 때 min을 쓰는게 좋다

 

 

min은 바로 최솟값을 가져오지만

order by limit1은 실행할 때마다 정렬을 한다. 

 

최악의 경우, 인덱스가 없는경우

min 이 order by limit 1 보다 빠르다

최선의 경우, 인덱스가 있는경우

min 과 order by limit 1 의 성능을 비슷하다

하지만 그래도 order by limit1은 실행할 때마다 정렬을 한다. 

 

 

 

 

 

최대값

select MAX(컬럼) from 테이블;

최소값

select MIN(컬럼) from 테이블;

 

 

 

ORDER BY

정렬할 때 사용

 

asc:오름차순 (안써도 된다)
desc:내림차순

 

limit 가져오는 레코드의 개수를 제한한다

 

 

 

 

 

 

 

https://eyeballs.tistory.com/463

 

[SQL] Min 과 Order By limit 1 중 어느 것을 사용해야 할까?

min 과 order by limit 1 중 어느 것이 더 나은 성능을 보일까? 그래서 어느 것을 사용해야 할까? < 결과 > min 값만 구하는 경우 min 을 사용 min 값을 갖는 row 를 찾아야 하는 경우 order by limit 1 을 사용 <..

eyeballs.tistory.com

https://stackoverflow.com/a/426785

 

MIN/MAX vs ORDER BY and LIMIT

Out of the following queries, which method would you consider the better one? What are your reasons (code efficiency, better maintainability, less WTFery)... SELECT MIN(`field`) FROM `tbl`; SELECT `

stackoverflow.com

https://www.inflearn.com/questions/23797

 

max/min vs. order by + limit 질문 - 인프런 | 질문 & 답변

안녕하세요, 최대값과 최소값 찾는 방법에 대해 질문드려요. 가장 쉬운 방법으로는 MAX() 와 MIN()를 쓰는 방법이 있는데, 수업 중에 선생님께서 order by ___ desc, limit 1 와 order by ___ asc, limit 1도 가르

www.inflearn.com

 

https://sql-factory.tistory.com/634

 

 

 

 

MySQL MIN / MAX 대 ORDER BY 및 LIMIT

다음 쿼리 중 더 나은 방법을 고려할 수있는 방법은 무엇입니까? 당신의 이유는 무엇입니까 (코드 효율성, 더 나은 유지 보수성, 덜 WTFery) ... SELECT MIN(`field`) FROM `tbl`; SELECT `field` FROM `tbl` ORDE..

sql-factory.tistory.com

https://pram.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%BA%BC%EB%82%B4%EA%B8%B0select-ORDER-BY-LIMIT

 

728x90
728x90

https://stepby-yun.tistory.com/192?category=554522 

 

mysql while 여러시도..

https://stepby-yun.tistory.com/191 mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER ) while문 해보려는데.. 나와같은 의문을 가지신 분 프로시저 꼭 만들어서 써야돼? https://stackoverflow.com/q..

stepby-yun.tistory.com

프리비어슬리~

 

새로 생긴 행이랑 이전 행 시간을 빼서 1분 이상일때마다

값을 넣어줄까? 했는데 무한insert되고 난리남

 

(이 글의 결론)

1분이 흐를때마다 ->이자증액값을 넣어준다

에서

값넣는다. 1분마다시간증가, 이자증액, 

이렇게

insert할때 한꺼번에 넣는 걸로 식만듦..(저번에 한달씩 증가랑 똑같이 함.)

------

 

 

 

기준 잡기의 중요성..

한 시간씩 증가하고

넣고 먼저 해보자

최대증가한 시간

몇번째 행의 시간이 얼만지 생각! 

 


 

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 id from sequence order by id desc limit 1) < 10 do


INSERT INTO sequence (name,deposit_date,deposit_amount,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 hour),
((select deposit_amount from sequence where  deposit_amount order by id desc limit 1) + (select interest_amount from sequence where  interest_amount order by id desc limit 1)),
(select deposit_amount from sequence where id='1')* 0.04 /12;

end while;
end //
delimiter ;

call pro();

select * from sequence;
 


아 다음행에 insert 추가 되는게

마지막 id가 9이니까

 

10까지 뜨는거구나~!!

 

그래도 deposit_amount의 마지막행 10000000을 구해서 이자액 33333을 구했으면 

 

2번째 행에 deposit_amount도 들어갈 수 있는거 아닌가 왜 

 

null값이지? 

 

 

+

 

지금은 한번에 들어가는거니까 

날짜를 추가하고 추가될때마다 이자액이 찍히게 하면 되려나...

 

 

update써서 해보자

 

update 안되는이유 여기서 세팅 설정바꿔줘야함

https://lightblog.tistory.com/193

 

[MYSQL] 에러 번호 1175 Safe Update 해결방법

MySQL에서 쿼리를 실행하다보면 다음과 같은 에러를 마주할 때가 있다. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable..

lightblog.tistory.com

오마갓 숫자를 ''

여기 넣어서 문자열로 만들어서 쓰고있었네

 

 

 

 

하지만 잘 안됨

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
DECLARE n varchar(45) default "이소윤" ;

while (select id from sequence order by id desc limit 1) < 10 do
INSERT INTO sequence (deposit_date) select (date_add((select deposit_date from sequence where  deposit_date order by id desc limit 1),INTERVAL 1 hour));

update sequence 
set 
name = n,
interest_amount =  (select deposit_amount where  deposit_amount order by id desc limit 1)* 0.04 /12;




end while;

end //
delimiter ;
call pro();

select * from test.sequence;


 

---

시간 증가만 insert해주고

나머지는 update로 넣어주려 했으나 잘안됨..

그래서 원래 한번에 다 insert한 걸로 수정함

 

중간에 null인거..

 

 

그냥 id가 2인거 조건으로 넣어줌..

이러면 안될거같지만

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 id from sequence order by id desc limit 1) < 10 do


INSERT INTO sequence (name,deposit_date,deposit_amount,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 hour),
((select deposit_amount from sequence where  deposit_amount order by id desc limit 1) + (select interest_amount from sequence where  interest_amount order by id desc limit 1)),
(select deposit_amount from sequence where id='1')* 0.04 /12;


end while;
end //
delimiter ;

call pro();

update sequence 
set deposit_amount = 10000000
where id = 2;


select * from sequence;

 

 

 order by limit 1

를 쓰는 것보다 max가 좀더 빠르다는 얘기를 들음

내일 수정해봐야겠다

 

728x90
728x90

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

 

mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER )

while문 해보려는데.. 나와같은 의문을 가지신 분 프로시저 꼭 만들어서 써야돼? https://stackoverflow.com/questions/12954095/mysql-declare-while-outside-stored-procedure-how mysql DECLARE WHILE outside..

stepby-yun.tistory.com

지난시간...

while문 해보려다가 프로시저로 감싸야한다길래 그거 공부했다.

 

다시 while문 해보자~

 

 

create procedure pro(i int)
begin 
while i < 5 do
insert into sequence (interest_amount) values (i);
set i = i +1;
end while;
end
//
DELIMITER ;

call pro(0);

 

 

 

 

 

 

커맨트 창에 명령어입력할때 한 줄씩 넣어야 작동하네...

while 기본적인 거 했으니까 과제해보기

 

 

1시간씩 이자액 증가하기 

명령문 실행했을 때

기준 시간보다 몇 시간 지나있으면 그 몇시간 만큼 이자액 증가. 

 

 

DELIMITER //

create procedure pro(i)

while   if (기준시간 + 1 분 * i) > 기준시간 ,이면 실행한다.   do

이자액 증가 실행 

insert into sequence (interest_amount) values (증가한 이자액 넣기);

set i = i+1;

end while

end

 

//
DELIMITER ;

 

 

call pro(0)

 

 

 

0부터 시작해서 

기준시간

 

 

 

----

몇분이 지났는지는 

금액으로 넣어줘야되려나?

 

 

 

조건은 1분씩 이자액이 들어갈거임

 

지금시간보다 1분증가

현재시간이 기준시간보다 n분이상이면

if now >

n분 증가할때마다 이자율 증가

 

 

https://ponyozzang.tistory.com/697

 

MySQL 날짜, 시간 계산 DATEDIFF, TIMEDIFF 사용 방법

MySQL에서 날짜 함수를 사용해 날짜 또는 시간 게산을 하는 방법을 알아보겠습니다. 날짜와 시간 계산에 관련된 함수가 어떤 것이 있는지 먼저 간단히 보겠습니다. DATEDIFF() - 두 기간 사이의 일수

ponyozzang.tistory.com

SELECT * FROM test.sequence;
drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while @min < 30 do
set @min = minute((SELECT TIMEDIFF(now(),'2022-05-11 10:30:00')));
set @deposit_amount =(select deposit_amount from sequence where id='1');
select @min;
insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end while;
end //
delimiter ;

call pro();

 

오 뭔가 함 근데 계속 들어가!!!!

1분 지났을때만 추가되어야하는데..

 

 

SELECT * FROM test.sequence;
truncate sequence;

insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');

drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while @min <10 do
set @min = minute(   (SELECT TIMEDIFF(now(),'2022-05-11 11:48:00'))   );
set @deposit_amount =(select deposit_amount from sequence where id='1');
select @min;
insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end while;
end //
delimiter ;

call pro();



1분마다 바뀌어야하는데 초 차이날때마다 업데이트됨

워크벤치에서 한번에 실행하고 싶은데 왜 cmd에서는 잘되어도 워크벤치는null값으로 계속 찍힐까?

 

 

 

계속 찍힘 이렇게..

-------------------

 

SELECT * FROM test.sequence;SELECT * FROM test.sequence;
truncate sequence;

insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');

drop procedure if exists pro;
delimiter //
create procedure pro()
begin

set @deposit_amount =(select deposit_amount from sequence where id='1');
while @min <10 do
set @min = minute(   (SELECT TIMEDIFF(now(),'2022-05-11 14:26:00'))   );
if ( @min /@min >0) then
insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end if;
end while;

end //
delimiter ;

call pro();

 

----

 

set @lastTime = (select deposit_date from sequence where  deposit_date order by id desc limit 1);

 

만약, 이전분보다 1분 흘렀으면

if   (SELECT TIMEDIFF(now(),마지막행시간)) > '00:01:00'

set 흐른분 = minute(SELECT TIMEDIFF(now(),마지막행시간))

마지막행에 넣기 흐른분* 이자율 

 

 

////////////////

SELECT * FROM test.sequence;SELECT * FROM test.sequence;
truncate sequence;
set @test = (select subtime(now(),'00:02:00'));
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤',@test,'10000000');

drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while @min <30 do
set @interestAmount = (select interest_amount from sequence);

if   (SELECT TIMEDIFF(now(),@lastTime)) > '00:01:00' then
set @lastTime = (select deposit_date from sequence where  deposit_date order by id desc limit 1);
set @min = minute(   (SELECT TIMEDIFF(now(),@lastTime))   );
if ( @interestAmount !=  @interestAmount) then
insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end if;
end if;
end while;
end //
delimiter ;

call pro();

 

 

 

///////////

SELECT * FROM test.sequence;SELECT * FROM test.sequence;
use test;
truncate sequence;
set @test = (select subtime(now(),'00:02:00'));
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤',@test,'10000000');

drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while  do
set @min = minute(   (SELECT TIMEDIFF(now(),(select deposit_date from sequence where  deposit_date order by id desc limit 1)))   );
set @interestAmount = (select interest_amount from sequence where interest_amount order by id desc limit 1);

if    @min > '0' then
insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
if ( @interestAmount !=  @interestAmount) then
insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end if;

end if;
end while;
end //
delimiter ;

call pro();

 

/////////////

 

------------

 

 

 

마지막에서 1꺼

마지막에서 2한번더 들어간거!

이렇게 

수정해야겠다. 왜냐면 

id=2부터 이자액 들어가니까

 

use test;
truncate sequence;

set @setTime = (select subtime(now(),'00:02:00'));
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤',@setTime,'10000000');

drop procedure if exists pro;
delimiter //
create procedure pro()
begin
set @min = minute((SELECT TIMEDIFF(now(), @setTime)));
set i =1;

while i <= @min do
set i = i +1;
set @interest_amount = (select interest_amount from sequence where  interest_amount order by id desc limit 2);
set @Prev_interest_amount = (select interest_amount from sequence where  interest_amount order by id desc limit 3);

if (@interest_amount != @Prev_interest_amount) then 
 insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end if;
end while;
end //
delimiter ;

call pro();

 

흑흑 안돼...

 

 

왜 삭제 안되지?????

 

 

use  test;

를 빼먹었나 그거 하고 하니까 됨

 

 

/////

여러번으 시도를 했지만 안됨..

use test;
truncate sequence;


set @setTime = (select subtime(now(),'00:02:00'));
select @setTime;
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤',@setTime,'10000000');
select * from sequence;

drop procedure if exists pro;
delimiter //
create procedure pro(i int)
begin
set @min = minute((SELECT TIMEDIFF(now(), @setTime)));
select @min;


while i <= @min do
set i = i +1;
select i;
set @interest_amount = (select interest_amount from sequence where  interest_amount order by id desc limit 1);
set @Prev_interest_amount = (select interest_amount from sequence where  interest_amount order by id desc limit 2);

if (@interest_amount != @Prev_interest_amount) then 
 insert into sequence (interest_amount) values (@min*(@deposit_amount*0.04/12));
end if;
end while;
end //
delimiter ;

call pro(1);
select * from sequence;

728x90

+ Recent posts