database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31278 게시물 읽기
No. 31278
FIFO 로직 관련 도움을 구합니다.
작성자
sunny
작성일
2020-02-18 23:38
조회수
673

 

TABLE SRC

+------+------+------+

| SEQ  | SAVE | USE  |
+------+------+------+
|    1 |  100 |      |
|    2 |  220 |      |
|    3 |  150 |      |
|    4 |  250 |      |
|    5 |  300 |      |
 
로우별 적립 이력을 조회하면 위와 같 있습니다.
 
사용자가 450포인트를 사용한다고 요청을 받았을때
+------+------+------+
| SEQ  | SAVE | USE  |
+------+------+------+
|    1 |  100 | 100  |
|    2 |  220 | 220  |
|    3 |  150 | 130  |
|    4 |  250 |      |
 
위 와같은 식으로 포인트 사용을 FIFO로 하고 싶은데요.
 
방법이 있을까요.
 
나름 프로시져로 해보려고 했는데... 예처럼 3번 줄까지만 선택하여 업데이트 하려고 하니 잘안되네요. ㅠㅠ

 

이 글에 대한 댓글이 총 2건 있습니다.

음.. 프로시져에서 쿼리의 결과를 받아 루프처리하시면 될 것 같으네요. 

참고요... 

 

 

 

 


set @amt = 450;

select
a.seq,
save,
case when a.seq != b.seq then save - ifnull(used, 0)
else @amt - (select sum(save - ifnull(used, 0)) from src where seq < b.seq)
end as calc_used
from
src a
inner join (
select min(seq) as seq
from (
select
seq,
save,
(select sum(save - ifnull(used, 0)) from src where seq <= a.seq) as agg
from src a
where
save - ifnull(used, 0) > 0
) x
where agg >= @amt
) b
on a.seq <= b.seq

 

.님이 2020-02-19 11:27에 작성한 댓글입니다.
이 댓글은 2020-02-19 11:28에 마지막으로 수정되었습니다. Edit

WITH t AS
(
SELECT 1 seq, 100 save
UNION ALL SELECT 2, 220
UNION ALL SELECT 3, 150
UNION ALL SELECT 4, 250
UNION ALL SELECT 5, 300
)
SELECT seq, save
     , @rem tot
     , CASE WHEN @rem >= save THEN save ELSE @rem END use_
     , @rem := @rem - CASE WHEN @rem >= save THEN save ELSE @rem END rem
  FROM t a
     , (SELECT @rem := 450) b
;

마농(manon94)님이 2020-02-19 11:33에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31281Mariadb auto increment 에 관한 질문입니다. [3]
auto
2020-03-12
656
31280substring_index에 관해서 질문입니다. [3]
이기자
2020-03-09
597
31279Slow Query에 의한 DB 성능 영향은? [3]
천성민
2020-03-05
618
31278FIFO 로직 관련 도움을 구합니다. [2]
sunny
2020-02-18
673
31277개인정보 암호화 [3]
암호
2020-02-06
764
31275안녕하세요 DeadLock 분석 요청드립니다. [1]
MariaDB 초보
2020-01-29
746
31274쿼리 질문 드립니다. [1]
도상훈
2020-01-20
772
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2020 DSN, All rights reserved.
작업시간: 0.045초, 이곳 서비스는
	PostgreSQL v13.1으로 자료를 관리합니다