컬럼 내 연산에 대한 문의 0 5 602

by 와니와플 [2021.02.06 12:17:31]


SELECT A.* FROM 
(
SELECT YEAR(TA_D) AS Y_TAD, SUM(AMT) FROM GN_SEXAGE
GROUP BY YEAR(TA_D)
) A
;

 

이것의 결과로 아래와 같이 나왔는데 저는 2019년 대비 2020년의 증감율을 보고 싶습니다. 한 컬럼내에 있어서... 어떻게 처리하는 것이 가장 빠를까요? 해당 테이블의 로우수가 2000만건이라서 별도 테이블은 만들지 않고 처리하려고 합니다..

2018 1316857544265
2019 1492015630220
2020 1669515042362
by 마농 [2021.02.06 13:28:10]
SELECT YEAR(ta_d) y_tad
     , SUM(amt) amt
     , ROUND( SUM(amt) * 100.
            / LAG(SUM(amt)) OVER(ORDER BY YEAR(ta_d))
            - 100, 2) 전년대비증감률
  FROM gn_sexage
 GROUP BY YEAR(ta_d)
;

 


by 와니와플 [2021.02.06 13:34:22]

감사합니다!

쿼리에 에러가 나는데 100.이 아니라 100인거지요? 이대로 적용했는데,,, 에러가 나네요 ㅠ


by 마농 [2021.02.06 13:37:51]

100. 이 맞습니다. 소수점까지 계산. 100 으로 하면 정수로 계산.
오류가 난다면 LAG 때문일 듯 한데요? 버전이 낮아서?
MSSQL 2017 에서 정상 수행됩니다.


by 와니와플 [2021.02.06 13:49:33]

선생님,,,! 제 버전은 MYSQL 5.7 입니다..! 조언 부탁 드립니다!


by 마농 [2021.02.06 14:02:08]

2년치를 1 행에 보여주는 형태로 해서 계산하세요. -> 이전 질문글 참조.

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