대충 테이블이 이렇게 되어있다고 하고요
ID 점수
a 3
b 10
c 5
d 5
쿼리를 해서 순위값을 알고 싶거든요. 이런식으로
순위 ID 점수
1 b 10
2 c 5
2 d 5
3 a 3
이런식으로 점수 높은 순으로 소트하면서 같은 점수는 같은 순위로 하면서
순위값을 알고 싶습니다. 제가 DB 초보라서 힘드네요. 급해서 그러는데 고수님들이 Sql 문을 가르쳐 주시면 감사하겠습니다.
방법이 좀 구차하지만
create table jumsu(
id text unique not null,
score int
);
-- insert into jumsu .....
insert into jumsu values('a',3);
insert into jumsu values('b',10);
insert into jumsu values('c',5);
insert into jumsu values('d',5);
drop sequence no_seq;
create temp sequence no_seq start 1;
select b.sq,a.id,a.score
from
(select id,score from jumsu order by score desc) a
left join
(select nextval('no_seq') as sq ,bb.score as score from
(select distinct score from jumsu order by score desc) bb
) b using (score)
;
-- result
sq | id | score
----+----+-------
1 | b | 10
2 | c | 5
2 | d | 5
3 | a | 3
(4 rows)