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 27308 게시물 읽기
No. 27308
순위(rank)구할 때 여러컬럼비교하여 구하는 방법좀 부탁드립니다
작성자
해바라기
작성일
2008-01-09 10:38ⓒ
2008-01-09 10:59ⓜ
조회수
4,367

rank구할때 비교하여 값이 같으면 다른 컬럼 비교하여 rank를 구할 수 있는 방법 좀 알려주세요!

[단일 비교로 구한 rank 쿼리문]
select r1.no,r1.total,r1.win,r1.lose,r1.draw, count(r1.no) rank
from rank r1, rank r2
where  r1.win < r2.win
   or  r1.no = r2.no
 group by r1.no


rank테이블에서 위 쿼리로 날리면  순위가 아래와 같이 나옵니다.
no   total   win   lose draw   rank
================================
1      5        3     1      1         2
2      5        4     1      0         1
3      4        2     2      0         3
4      3        2     1      0         3
5      0        0     0      0         5
6      3        0     0      3         5
7      3        2     1      0         3 


[원하는 결과값] - 값이 값을경우 다른 컬럼과 비교하여 rank구하는 방법쿼리좀 부탁드립니다..
no   total   win   lose draw   rank
================================
1      5        3     1      1         2
2      5        4     1      0         1
3      4        2     2      0         3
4      3        2     1      0         4
5      0        0     0      0         7
6      3        0     0      3         6
7      3        2     1      0         4     
rank를 구할때 win갯수가  같으면 lose갯수와 비교
                    lose갯수가 같으면 draw갯수와  비교하여 
원하는 결과 값으로 rank구하려면 어떻게 해야 하는지 방법좀 알려주세요!!

이 글에 대한 댓글이 총 2건 있습니다.
if() 함수를 사용하였습니다..

select r1.no,r1.total,r1.win,r1.lose,r1.draw, count(r1.no) rank
from rank r1, rank r2
where  (if(r1.win <> r2.win,r1.win<r2.win,if(r1.lose<>r2.lose,r1.lose<r2.lose,r1.draw<r2.draw)))
   or  r1.no = r2.no
 group by r1.no
order by rank
해바라기님이 2008-01-09 13:00에 작성한 댓글입니다. Edit

order by 에 여러 컬럼 넣으면 되지 않나요?

 

select ... from ... order by win desc, lose asc, draw desc

asc나 desc는 원하는 대로 넣으시고 ( 제시해주신 예제를 보면 2승 2패가 2승 1패보다 등수가 높은데, 일반적인 경우는 반대 아닌가요? 아무튼.. )

 

쿼리해서 나온 결과값의 순서에 따라 rank를 주고, no에 따라 정렬해서 출력하시면 원하시는 결과가 나올 듯 한데요.

박현우(lqez)님이 2008-01-14 11:34에 작성한 댓글입니다.
이 댓글은 2008-01-14 11:35에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
27312디비 초보자에요 질문있는데 ㅜㅜ [1]
최영진
2008-01-10
2598
27311게시판 쿼리 질문입니다. [3]
심명선
2008-01-09
2968
27309mysql front 에서 프로시저 짜는 예제좀.. ^^ [1]
신승범
2008-01-09
4530
27308순위(rank)구할 때 여러컬럼비교하여 구하는 방법좀 부탁드립니다 [2]
해바라기
2008-01-09
4367
27307동일머신에 2개 이상의 mysql을 설치 할 수 있나요? [1]
kevin
2008-01-08
2640
27305고수님들 꼭 봐주세요. [1]
초보입니다
2008-01-08
2781
27304간단한 조인인것 같은데 .... or로 다 묶는 조인은? [3]
임시손님
2008-01-08
2732
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다