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
운영게시판
최근게시물
MS-SQL Q&A 4241 게시물 읽기
No. 4241
커서 질문..
작성자
커서초보
작성일
2008-05-30 11:16
조회수
4,577

회원이 가장 많은 카페순으로 가져와서 랭킹을 매기려고 합니다.
커서를 사용해서 루프를 돌면서 순위와 카페번호를 넣으려고 하는데... 잘안되네요..
소스는 아래와 같습니다.
커서를 사용할줄 모르다보니 어떻게 해야 할지를 모르겠네요.. 부탁드립니다.

declare @cafenum_c int,@rank int,@counter_c int

set @rank=1

declare inout_cursor CURSOR
  FOR
    select cafenum,count(*) as counter from mk_cafe_entrylist group by cafenum order by counter desc

  open inout_cursor
  fetch next from inout_cursor into @cafenum_c,@counter_c

 
  WHILE @@FETCH_STATUS = 0
  BEGIN
    insert into mk_cafe_ranking(cafenum,ranking) values(@cafenum_c,@rank)
 
    set @rank = @rank + 1
  End

CLOSE inout_cursor
DEALLOCATE inout_cursor

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

 

IF OBJECT_ID('TEMPDB..#CAFE_RANK') IS NOT NULL
 DROP TABLE #CAFE_RANK
 
CREATE TABLE #CAFE_RANK
(CAFENUM INT
, COUNTER INT
, RANK INT IDENTITY(1,1) )

INSERT INTO #CAFE_RANK (CAFENUM, COUNTER)
 SELECT CAFENUM, COUNT(*) AS COUNTER FROM MK_CAFE_ENTRYLIST
 GROUP BY CAFENUM
 ORDER BY COUNTER DESC


SELECT #CAFE_RANK

 
.님이 2008-05-30 11:40에 작성한 댓글입니다. Edit

굳이 커서를 사용하실 필요가 있으신가여..


SET @rank = 0


insert into mk_cafe_ranking(cafenum,ranking)

values

(

   (

      select a.cafenum from mk_cafe_entrylist as a

       inner join

       (

          select cafenum, count(cafenum) as c from mk_cafe_entrylist

          group by cafenum order by c desc

       ) as b

       on a.cafenum = b.cafenum

   ),

   (

       SELECT @rank = @rank + 1

   )

)


얼추 이렇게 하시면 됩니다.


굳으 커서를 열고 성능 다운하실 필요가 ㅎㅎ^^:; 아니면 임시 테이블 만들어서 다시 select 하는방법도 있습니다.


김병석(byung82)님이 2008-06-02 01:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4256inner join [1]
초보
2008-06-03
3773
4255커서를 이용해서 여러테이블에 있는 데이터 백업 [2]
초보입니다.
2008-06-02
4273
4242ms_sql쿼리 질문입니다. [2]
빙승재
2008-05-30
4252
4241커서 질문.. [2]
커서초보
2008-05-30
4577
4240셀렉트와 인서트를 한번에 처리.. [1]
손님
2008-05-29
4514
4239distinct를 적용한 쿼리인데.. 어떻게 해야 할까요? [3]
김갑열
2008-05-29
4200
4238ms_sql 쿼리문 마지막 질문 드리겠습니다. [1]
빙승재
2008-05-29
3891
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다