mysq 윈도우 함수 도움 부탁드립니다! 0 4 692

by 김한 [MySQL] [2022.05.15 16:29:38]


제목 없음.png (4,745Bytes)

안녕하세요. 데이터 값을 핸들링 해보려고하는데 사용자 함수를 사용해서 해보려고합니다.

글내용에 사진이 첨부가 안되는데 제가 못하는건지.. 파일첨부 했습니다.

데이터는 3개정도만 뽑아왔고 1000개정도의 row가 있습니다. 

1월5일 5800과 1월4일 6000을 계산해서 5800 - 6000 = -200 이 나오게 하고싶은데 어떻게 해야할지 모르겠습니다.

계속해서 전날과 비교되어 -200, -50 , 이런식으로 계산해보고싶은데 결론적으로 end컬럼 뒤에 as result로 -200 ,-50 이렇게 보이게 하고싶습니다.

문제 해결에 힌트좀 주시면 감사하겠습니다

 

 

by pajama [2022.05.15 23:05:28]

lag 함수로 가능하네요.

 

with t (code, dt, first, up, down, end) as (
select '005930', '2000-01-04', '6000', '6100', '5660', '6110' from dual union all
select '005930', '2000-01-05', '5800', '6060', '5520', '5580' from dual union all
select '005930', '2000-01-06', '5750', '5780', '5580', '5620' from dual
)
select code, dt, first, first - lag(first) over (partition by code order by dt) as_result
from t

 


by 김한 [2022.05.16 19:48:43]

답변감사합니다. 한 가지 더 여쭤보고 싶은게 데이터가 엄청 많다면 한번에 저렇게 만들순 없나요?

일일이 select 해줘야하는지 궁금합니다.


by pajama [2022.05.16 22:11:05]

with 절은 말씀하신 데이터를 사용하기 위한 구문이라서 실제 사용하시는 테이블을 from 절에 사용하시면 됩니다~


by 김한 [2022.05.16 23:03:13]

와! 성공했습니다. 정말 감사합니다. 

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