일자, 종목, 시간, 가격의 컬럼이 있을때
초단위의 데이터를 분단위별 가격의 시가(분의 처음가격), 고가, 저가, 종가(분의 마지막 가격)을 구하려고 하는데 어떻게 해야 하나요?
아래 예저 2과 같이 시작시간과 종료시간을 구하여 조인하여 사용할수 있으나 시간이 많이 걸려서요..
그래서 예제 1과같이 테이블 조인없이 만드려고 하는데 종가를 구할수가 없네요..
어떻게 구할수 있는 방법이 없을까요?
=============예제 1==================================================
select A.일자, A.종목, mid(A.시간, 1, 4) as 시간
,(CASE WHEN A.시간 = MIN(A.시간) THEN 가격
ELSE 0
END) AS 시가
, max(A.가격) as 고가
, min(A.가격) as 저가
,종가는 어떻게 구하나요?
from Table A
where A.일자 = 'yyyymmdd'
group by A.일자, A.종목, mid(A.시간, 1, 4)
=============예제 2==================================================
select e.일자, e.종목, e.시간, s.가격 as 시가, p.고가, p.저가, e.가격 as 종가
from ( select 일자, 종목
,MID(시간, 1, 4) as 시간
,MIN(시간) as 시작시간
,MAX(시간) as 종료시간
from table
where 일자 = 'yyyymmdd'
group by 일자, 종목, mid(시간, 1, 4)
) t
,( select 일자, 종목
,mid(시간, 1, 4) as 시간
,max(가격) as 고가
,min(가격) as 저가
from table
where 일자 = 'yyyymmdd'
group by 일자, 종목, mid(시간, 1, 4)
) p
, table s
, table e
where t.일자 = s.일자
and t.일자 = e.일자
and t.일자 = p.일자
and t.종목 = s.종목
and t.종목 = e.종목
and t.종목 = p.종목
and t.시작시간 = s.시간
and t.종료시간 = e.시간
and t.시간 = p.시간 |