쿼리_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절만 나오도록(위 쿼리문에서 --을 빼면) | |
철수 | 4 |
이렇게 나옵니다. 여러가지 경우로 사용가능할 수도 있죠.
예를 들면,
미팅 : 나에게 프로포즈 많이 한 사람 순위
선물 : 나에게 선물 많이 준 사람 순위 등등
학원 : 결석한 사람 순위