FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[2525] Re:Re:Re:몇 등인지 알수있는 함수?
글쓴놈 [] 2195 읽음    2007-06-22 12:34
select
  C.YYYYMMDD,
  (select first 1 skip 0 sum(X.sle_totprice) from sale X
   where X.sle_date = C.YYYYMMDD
   group by X.sle_mem_cd order by sum(X.sle_totprice) desc) No1,
  (select first 1 skip 1 sum(X.sle_totprice) from sale X
   where X.sle_date = C.YYYYMMDD
   group by X.sle_mem_cd order by sum(X.sle_totprice) desc) No2,
  (select first 1 skip 2 sum(X.sle_totprice) from sale X
   where X.sle_date = C.YYYYMMDD
   group by X.sle_mem_cd order by sum(X.sle_totprice) desc) No3
from cal C
where C.YYYYMMDD between '20070501' and '20070510'

일단, 그냥 금액만 가져와서 이렇게하니 만족스러운 속도가 나오긴 합니다.^^
(그래도 비효율적인 구조인것 같네요;;)

이쥐엔이에스 님이 쓰신 글 :
: 답변 감사합니다. 하지만, 제가 중요한건 말씀드리지 않았네요^^
: 예제을 참고해보면, 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.

+ -

관련 글 리스트
2521 몇 등인지 알수있는 함수? 이쥐엔이에스 1813 2007/06/21
2522     Re:몇 등인지 알수있는 함수? civilian,안영제 1909 2007/06/22
2524         Re:Re:몇 등인지 알수있는 함수? 이쥐엔이에스 2287 2007/06/22
2525             Re:Re:Re:몇 등인지 알수있는 함수? 글쓴놈 2195 2007/06/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.