sql쿼리 질문이요 oracle10xe 0 6 6,226

by 김재현 oracle [2014.02.14 17:17:17]


oracle 10xe 사용중입니다.

CREATE TABLE stockinfo
(
stockno              NUMBER NOT NULL ,
kind                   VARCHAR2(18)  ,
companyno         VARCHAR2(18) ,
companyname     VARCHAR2(50)  , 
presentprice       NUMBER NULL ,
datetime             DATE NULL
);
이런식의 테이블이 있습니다.
20분마다 주식정보를 받아와서 100개의 데이터를 넣습니다.(insert)

문제는
가장 최근날짜(시간)의 정보 100개를 select으로 뽑으려니 자꾸 막힙니다.
select * 
from stockinfo
group by companyno
having max(datetime);

이러면 관계 연산자가 부적합합니다라고 합니다..

도움부탁드립니다.
by DarkBee [2014.02.14 17:21:33]
select * from (
select * 
from stockinfo
order by 
datetime
) where rownum <= 100

datetime 인덱스가 있음 좋겠네요

by DarkBee [2014.02.14 17:45:16]
인덱스가 있다면


select /*+ index_desc ( a 인덱스명 ) */

from stockinfo a
where rownum <= 100

by 김재현 [2014.02.15 14:49:44]
오 from에도 저렇게 쓸수 있다는 것을 처음 알았네요... 아직 배우는 중이라 데이터 잘 뽑아옵니다 감사합니다

by 날도 [2014.02.14 17:32:45]

key 나 index가 없나요??

없다면...

select B.*
from (
select
rowid as rid,
    rownum as rnum

from stockinfo
order by 
datetime
) A, 
stockinfo B  
where a.rid = b.rowid
and a.rnum <= 100

by 김재현 [2014.02.15 14:49:07]
와우 이것도 잘 됩니다 ^^ 감사합니다

by 김재현 [2014.02.15 14:58:20]
ㅎㅎ 제가 원하는건 이거였습니다
select * from (
select * 
from stockinfo
order by datetime desc
) where rownum <= 100
order by stockno;

이러니까 가장 최근의 날짜로 순차적으로 100개를 가져오네요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입