내 데이터베이스에는 데이터가 일별로 저장됩니다. 값을 주 단위로 합한 다음 값을 지난주의 합계 값으로 나누고 싶습니다. SQL로 가능합니까? 예 :
Table Structure
ItemCode Amount DatebyDay
01 500 20170815
01 500 20170816
...
01 500 20170819
01 1000 20170821
01 1000 20170822
...
01 1000 20170825
...
02 2000 20170815
02 2000 20170816
...
02 2000 20170819
02 3000 20170821
02 3000 20170822
...
02 3000 20170825
....
내 예상 결과는 다음과 같습니다.
01 2 //(1000*5)/(500*5)
02 1.5 //(3000*5)/(2000*5)
그래서 누구든지 이것을 어떻게하는지 아는 사람이 있습니다.
SELECT ITEMCODE,F_VAL FROM
(
SELECT @PREV_VAL,CASE WHEN ITEMCODE=@PREV_ITEMCODE THEN AMT/@PREV_VAL END F_VAL, @PREV_VAL:=AMT,ITEMCODE,@PREV_ITEMCODE :=ITEMCODE FROM
(
SELECT SUM(AMOUNT) AMT,DATEBYDAY,ITEMCODE FROM
(
SELECT *,WEEK(DATEBYDAY) WEEK
FROM STRUCTURE,(SELECT @PREV_VAL:=0,@PREV_ITEMCODE :=0)Z1 ORDER BY ITEMCODE, WEEK(DATEBYDAY)
)Z GROUP BY ITEMCODE,WEEK
)Y
)X WHERE F_VAL IS NOT NULL;
아래 쿼리를 사용 하여 SQLFiddle 데모를 사용하여 확인할 수 있습니다.
위의 코드를 시도해 볼 수 있습니다.
여기에서는 비즈니스 로직을 계산하기 위해 두 가지 변수를 사용했습니다.
확실히 그것은 당신을 도울 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다