이전달의 데이터 추출하기?? 0 2 492

by 날아라! [MySQL] [2019.05.02 08:34:13]


20190502_083202.png (18,358Bytes)

안녕하세요.

아래와같이 쿼리문을 하나 작성했는데요.

SELECT LEFT(itemsDate, 6) itemsDate
     , AVG(itemsIndex) itemsIndex
     , DATE_FORMAT(DATE_ADD(itemsDate, INTERVAL -1 MONTH),'%Y%m') prevDate
  FROM wiz_allItemsIndex 
 WHERE itemsDate BETWEEN '20170501' AND '20190502'
 GROUP BY LEFT(itemsDate, 6)
 ORDER BY itemsDate DESC 

 

결과는 첨부와 같습니다.

추출하고싶은내용은 prevDate 값의 itemsIndex값을 추출하고싶은데 제가 원하는대로 결과값이 출력되지않아 도움을 얻고자 합니다.

조언좀 부탁드립니다.

by 르매 [2019.05.02 14:26:48]
WITH C (itemsDate, itemsIndex) AS (
    SELECT LEFT(itemsDate, 6)
        , AVG(itemsIndex)
    FROM wiz_allItemsIndex 
    WHERE itemsDate BETWEEN '20170501' AND '20190502'
    GROUP BY LEFT(itemsDate, 6)
)
SELECT A.itemsDate
    , A.itemsIndex
    , LEFT(DATE_ADD(CONCAT(A.itemsDate, '01'), INTERVAL -1 MONTH), 6) AS prevDate
    , B.itemsIndex AS prevIndex
FROM C A
    LEFT OUTER C B ON B.itemsDate = LEFT(DATE_ADD(CONCAT(A.itemsDate, '01'), INTERVAL -1 MONTH), 6);

 


by 마농 [2019.05.07 00:00:09]
-- MySQL 8.0 이상 분석함수 사용 가능 --
SELECT LEFT(itemsDate, 6) itemsDate
     , AVG(itemsIndex)    itemsIndex
     , LEAD(AVG(itemsIndex)) OVER(ORDER BY LEFT(itemsDate, 6) DESC) itemsIndex_prevDate
  FROM wiz_allItemsIndex
 WHERE itemsDate >= '20170501'
   AND itemsDate <  '20190501'
 GROUP BY LEFT(itemsDate, 6)
;
-- MySQL 8.0 미만 셀프 조인 이용 --
SELECT a.itemsDate
     , a.itemsIndex
     , b.itemsIndex AS itemsIndex_prevDate
  FROM (SELECT LEFT(itemsDate, 6) itemsDate
             , AVG(itemsIndex)    itemsIndex
          FROM wiz_allItemsIndex
         WHERE itemsDate >= '20170501'
           AND itemsDate <  '20190501'
         GROUP BY LEFT(itemsDate, 6)
        ) a
  LEFT OUTER JOIN
       (SELECT LEFT(itemsDate, 6) itemsDate
             , AVG(itemsIndex)    itemsIndex
          FROM wiz_allItemsIndex
         WHERE itemsDate >= '20170501'
           AND itemsDate <  '20190501'
         GROUP BY LEFT(itemsDate, 6)
        ) b
    ON DATE_FORMAT(DATE_ADD(CONCAT(a.itemsDate, '01'), INTERVAL -1 MONTH),'%Y%m') = b.itemsDate
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입