답변 감사합니다. 하지만, 제가 중요한건 말씀드리지 않았네요^^
예제을 참고해보면, Score라는 필드의 값이 가변적입니다.
Sale 이라는 테이블(대략 100만건)이 있으며, 각 품목별 판매금액이 가변적입니다.
기간별 그날의 1위,2위,3위 하는 품목을 그래프로 보여주려고하는데;;
rownum이나, rank 같은 함수가 없어 다음과 같이 하려고 생각도 합니다만..
100% 비효율적인 구조인것 같기도합니다. Cal 은 단순 달력T입니다.
좋은 방법 없을까요?
select
C.YYYYMMDD,
(select sum(S.sle_totprice)
from sale S
where S.sle_date = C.YYYYMMDD
and sle_mem_cd = (
select first 1 skip 0
X.sle_mem_cd
from sale X
where X.sle_date = C.YYYYMMDD
group by X.sle_mem_cd
order by sum(X.sle_totprice) desc
)) No1
from cal C
where C.YYYYMMDD between '20070501' and '20070503'
civilian,안영제 님이 쓰신 글 :
: 테이블의 구조
:
: CREATE TABLE TEST (
: ID INTEGER,
: SCORE INTEGER
: );
:
: 데이터
:
:
: INSERT INTO TEST (ID, SCORE) VALUES (1, 80);
: INSERT INTO TEST (ID, SCORE) VALUES (2, 88);
: INSERT INTO TEST (ID, SCORE) VALUES (3, 90);
: INSERT INTO TEST (ID, SCORE) VALUES (4, 80);
: INSERT INTO TEST (ID, SCORE) VALUES (5, 70);
: INSERT INTO TEST (ID, SCORE) VALUES (6, 64);
:
: 쿼리문
:
: SELECT S1.ID,S1.score
: ,(SELECT COUNT(*)+1 FROM test S2 WHERE S2.score > S1.score) AS standing
: FROM test S1
: ORDER BY score desc
:
: 결과
:
: ID SCORE STANDING
: 3 90 1
: 2 88 2
: 1 80 3
: 4 80 3
: 5 70 5
: 6 64 6
:
: 주의사항
:
: 서브쿼리가 가능한 파이어버드 버전을 써야합니다.
:
: 이쥐엔이에스 님이 쓰신 글 :
: : 안녕하세요. :)
: :
: : 다음과 같은 데이타가 있을때, B가 해당 Row중에 몇등인지 알수있는 함수가 있는지요?
: :
: : A 38
: : B 23
: : C 88
: : D 22
: :
: : Thanks in advance.
|