본문 바로가기

work/mssql

[Tip]순위쿼리에 쓸수있는 몇가지 쿼리문들(version up)

1.단순 순위
ex)
id       score     순위
------------------------
aaa      90         1
bbb      85         2
ccc      85         2
ddd      80         4
eee      70         5
------------------------

select a.id, a.점수, (select count(*) + 1
                        from 해당테이블 b
                       where a.점수 < b.점수)
 from 해당테이블 a
where 해당조건
order by a.id


2.Group별 순위
ex)
id       score     순위
------------------------
aaa      90         1
aaa      85         2
aaa      80         3
bbb      80         1
bbb      70         2
ccc      90         1
ccc      85         2
ccc      80         3
------------------------

select a.code, a.점수, (select count(*) + 1
                        from 해당테이블 b
                       where a.code = b.code
                         and a.점수 < b.점수)
 from 해당테이블 a
where 해당조건
order by a.code

3.Group별 순위중 같은 Group중 최고점수 한명만 나열...
ex)
id       score     순위
------------------------
aaa      95         1
aaa      85        
aaa      80        
bbb      80         3
bbb      70        
ccc      90         2
ccc      85        
ccc      80        
------------------------
select a.id, a.점수,( select count(*) + 1
                        from (select id id, max(점수) 점수
                                from 해당테이블
                               group by id
                             ) c
                       where a.점수 < c.점수
                    ) 
  from (select id id, max(점수) 점수
          from 해당테이블
         group by id
       ) a