3초기억력

MS-SQL 랭킹(순위) 매기기 본문

쿼리_MSSQL

MS-SQL 랭킹(순위) 매기기

잠수콩 2008. 11. 13. 17:31


Table명 : TEST_POINT_LIST, Column명:name, regdate
 앙마 2008-10-11
 철수  2008-10-11
 영희  2008-10-12
 철수  2008-10-13
 진칠  2008-10-13
 영희  2008-10-11
 철수  2008-10-12
 진칠  2008-10-13

예를 들자면...
댓글 많이 달기 이벤트를 진행했다고 치고.
아뒤(이름), 날짜가 기본으로 저장될테고, 댓글등은 위 테이블에서 무시함.

이럴 경우 누가 댓글을 많이 달았나? 등수를 매기는 쿼리문.
단, 같은 댓글 갯수는 동일 등수로, 그 하위 등수는 그 아래부터

select name,
 (
 select count(*)+1
 from
  (
  select name, count(*) as p_cnt
  from TEST_POINT_LIST
  group by name
  ) p_rank
 where p_rank.p_cnt > p2_rank.p_cnt
 ) rank
from
 (
 select name, count(*) as p_cnt
 from TEST_POINT_LIST
 group by name
 ) p2_rank
--where name='철수'
order by rank

 name  rank
 철수  1
 진칠  2
 영희  2
 앙마  4
   
 where절만 나오도록(위 쿼리문에서 --을 빼면)  
 철수

이렇게 나옵니다. 여러가지 경우로 사용가능할 수도 있죠.

예를 들면,
미팅 : 나에게 프로포즈 많이 한 사람 순위
선물 : 나에게 선물 많이 준 사람 순위 등등
학원 : 결석한 사람 순위
Comments