database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30774 게시물 읽기
No. 30774
mysql - 시가, 고가, 저가, 종가 구하기
작성자
포맷(format96)
작성일
2014-10-15 20:15
조회수
8,377

일자, 종목, 시간, 가격의 컬럼이 있을때

초단위의 데이터를 분단위별 가격의 시가(분의 처음가격), 고가, 저가, 종가(분의 마지막 가격)을 구하려고 하는데 어떻게 해야 하나요?

아래 예저 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.시간

이 글에 대한 댓글이 총 1건 있습니다.

SELECT 일자
     , 종목
     , MID(시간, 1, 4) AS 시간
     , CAST(MID(MIN(CONCAT(시간, 가격)), 7) AS DECIMAL) AS 시가
     , MAX(가격) AS 고가
     , MIN(가격) AS 저가
     , CAST(MID(MAX(CONCAT(시간, 가격)), 7) AS DECIMAL) AS 종가
  FROM Table
 WHERE 일자 = 'yyyymmdd'
 GROUP BY 일자, 종목, MID(시간, 1, 4)
;

마농(manon94)님이 2014-10-17 10:52에 작성한 댓글입니다.
이 댓글은 2014-10-17 10:54에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
30779join 해서 결과값얻기 [2]
김양훈
2014-10-21
8218
30776이해안되는 mysql 쿼리문 에러 질문 [1]
질문
2014-10-19
7763
30775mysql 다른 두 DB의 같은 테이블 값 비교... [1]
강석진
2014-10-17
7819
30774mysql - 시가, 고가, 저가, 종가 구하기 [1]
포맷
2014-10-15
8377
30773MySQL 버전정보 [1]
오니오니
2014-10-14
7613
30772between join 방법 [1]
김양훈
2014-10-14
7307
30771APM 사용이 라이센스에 위반되는지 궁금합니다.
질문입니다
2014-10-13
7390
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다