2014-10-09 3 views
0

너무 많은 시간을 낭비했다는 문제가 있습니다.SQL 서버 - 그룹별로 최상위 x 행 선택

  • 플랫폼 : SQL 서버는
  • 당신은 나이와 우편 번호
  • 목록 테이블이 각 우편 번호의 상위 5 오래된 사람들

내가 볼 수있는 것은이 같은 단순화 할 수있다 커서를 사용하여이를 수행하는 방법이 있지만이를 달성하기위한 방법은 무엇입니까?

모든 의견을 환영합니다!

답변

0
SELECT * 
FROM (
     SELECT * 
      ,ROW_NUMBER() OVER (PARTITION BY zipcode ORDER BY Age DESC) rn 
     FROM TableName 
    )A 
WHERE RN <= 5 
를 사용할 필요가
0

당신은 ROW_NUMBER의 분석 기능을

SELECT * 
FROM 
(SELECT name, 
    age, 
    zipcode, 
    ROW_NUMBER() OVER   
    (PARTITION by zipcode 
     order by age desc) 
    as seq 
    ) T 
    Where T.seq <=5