앙녕하세요
지금 연산관련해서 쿼리를 계속 시도해보고 있는데
결과가 잘 나오지 않아서 질문드려요
mysql 5.7 버전을 사용중인데요 편의상 한글로 셀렉트문을 작성하였습니다.
------------------------------------------------------------
SELECT
@rownum := @rownum + 1 rownum
, 작업자
, 작업해야할총개수
, SUM(작업완료개수)
, 등록일
FROM fudeges, (select @rownum := 0) r
WHERE 1=1
AND fudegesSeq = '15054'
GROUP BY regDt
ORDER BY regDt DESC;
------------------------------------------------------------
이와 같이 셀랙트를 하면 결과값이 아래와 같이 매일 새벽 1시에
db에 insert가 됩니다.
rownum | 작업자 | 작업해야할개수 | 작업완료개수(누적) | 등록일
2000 박종혁 100000 2000 2021-10-08 01:00:00
1999 박종혁 100000 1800 2021-10-07 01:00:00
1997 박종혁 100000 1550 2021-10-06 01:00:00
1996 박종혁 100000 1300 2021-10-05 01:00:00
1994 박종혁 100000 1170 2021-10-04 01:00:00
1993 박종혁 100000 . 2021-10-03 01:00:00
1992 박종혁 100000 . 2021-10-02 01:00:00
1991 박종혁 100000 . 2021-10-01 01:00:00
1989 박종혁 100000 . 2021-09-30 01:00:00
1988 박종혁 100000 . 2021-09-29 01:00:00
1987 박종혁 100000 . 2021-09-28 01:00:00
1986 박종혁 100000 . 2021-09-27 01:00:00
1985 박종혁 100000 . 2021-09-26 01:00:00
1984 박종혁 100000 100 2021-09-25 01:00:00
총 작업해야할 물건을 받아서 작업을 하는데
금일 기준으로 누적된 값만 쌓고 있는데
매일 새벽 1시에 배치로 값을 일괄 insert할 때 별도 작업량을 넣는 부분이 없어서
행 기준으로 작업완료 개수 를 계속 빼서
아래와 같이 셀렉트 할때 작업완료개수(누적) 를 가지고
행끼리 빼면서 어제 작업량을(일일작업량) 계산하려고 합니다.
예를 들면 2000-1800 = 200, 1800 - 1550 = 250
바로 오늘 기준과 전날 기준으로만 계산해서 일일 작업량을 표현해야하는데요
버전때문인지 lead lag가 안먹는것같고
UNBOUNDED FOLLOWING 이것도 함수가 없는것 같네요 ..
혹시 이미 SUM(작업완료개수) 자체가 로우 데이터 합을 표현하고 있어서
SUM(작업완료개수) - SUM(작업완료개수) 를 해야하는 것이문제인지
결과값이 원하는대로 나오지가 않아서 질문드립니다.
감사함니다
rownum | 작업자 | 작업해야할개수 | 작업완료개수(누적) | 어제한작업량 | regDt
2000 박종혁 100000 2000 200 2021-10-08 01:00:00
1999 박종혁 100000 1800 250 2021-10-07 01:00:00
1997 박종혁 100000 1550 250 2021-10-06 01:00:00
1996 박종혁 100000 1300 130 2021-10-05 01:00:00
1994 박종혁 100000 1170 2021-10-04 01:00:00
1993 박종혁 100000 . 2021-10-03 01:00:00
1992 박종혁 100000 . 2021-10-02 01:00:00
1991 박종혁 100000 . 2021-10-01 01:00:00
1989 박종혁 100000 . 2021-09-30 01:00:00
1988 박종혁 100000 . 2021-09-29 01:00:00
1987 박종혁 100000 . 2021-09-28 01:00:00
1986 박종혁 100000 . 2021-09-27 01:00:00
1985 박종혁 100000 . 2021-09-26 01:00:00
1984 박종혁 100000 100 0 2021-09-25 01:00:00
SELECT rownum , 작업자 , 작업해야할개수 , 작업완료개수 , 어제한작업량 , regDt FROM (SELECT @rownum := @rownum + 1 AS rownum , 작업자 , 작업해야할개수 , 작업완료개수 , 작업완료개수 - @어제작업완료개수 AS 어제한작업량 , regDt , @어제작업완료개수 := 작업완료개수 FROM (SELECT 작업자 , 작업해야할개수 , SUM(작업완료개수) 작업완료개수 , regDt FROM fudeges , (SELECT @rownum := 0 , @어제작업완료개수 := 0 ) r WHERE 1=1 AND fudegesSeq = '15054' GROUP BY 작업자, 작업해야할개수, regDt ) a ) a GROUP BY regDt DESC ;