728x90
올바른 순위 정렬 결과를 얻으려면 (1) : 올바른 순위 정렬 결과를 얻으려면
ORDER BY를 실행하여 정렬하면 순위를 간단히 출력할 수 있지만 아쉽게도 같은 값이 존재한다면 같은 순위를 부여해야 한다.
예를 들어 아래와 같은 순위 결과를 출력하고 싶다면 어떤 쿼리를 활용해야 할까?
성적 테이블
순위 이름 점수
1 김진수 99
2 김영은 87
2 김한영 87
4 정진은 65
위의 표에서 나타나듯 김영은씨와 김한영씨는 같은 점수이다. 결국 공동2위로 순위표가 정상으로 출력되었다.
위와 같은 결과를 출력시키기 위해서는 그 사람의 점수보다 성적이 좋은 사람이 몇 명 있는지를 계산해야 한다.
서브쿼리를 활용하여 기술하면 위와 같은 올바른 순위 정렬 결과를 얻을 수 있다.
SELECT ( SELECT COUNT (*) + 1 FROM 성적 WHERE 성적.점수 > S.점수),S.이름, S.점수 FROM 성적 S
먼저 서브 쿼리를 통해 순위값을 구한다. 자신보다 성적이 좋은 사람이 없으면 COUNT(*)의 값은 0이되고
결국 +1을 통해 순위에 1이 리턴된다.
제공 : 코리아인터넷닷컴, a 2001년 11월 19일
ORDER BY를 실행하여 정렬하면 순위를 간단히 출력할 수 있지만 아쉽게도 같은 값이 존재한다면 같은 순위를 부여해야 한다.
예를 들어 아래와 같은 순위 결과를 출력하고 싶다면 어떤 쿼리를 활용해야 할까?
성적 테이블
순위 이름 점수
1 김진수 99
2 김영은 87
2 김한영 87
4 정진은 65
위의 표에서 나타나듯 김영은씨와 김한영씨는 같은 점수이다. 결국 공동2위로 순위표가 정상으로 출력되었다.
위와 같은 결과를 출력시키기 위해서는 그 사람의 점수보다 성적이 좋은 사람이 몇 명 있는지를 계산해야 한다.
서브쿼리를 활용하여 기술하면 위와 같은 올바른 순위 정렬 결과를 얻을 수 있다.
SELECT ( SELECT COUNT (*) + 1 FROM 성적 WHERE 성적.점수 > S.점수),S.이름, S.점수 FROM 성적 S
먼저 서브 쿼리를 통해 순위값을 구한다. 자신보다 성적이 좋은 사람이 없으면 COUNT(*)의 값은 0이되고
결국 +1을 통해 순위에 1이 리턴된다.
제공 : 코리아인터넷닷컴, a 2001년 11월 19일
'데이터베이스 > SQL Server' 카테고리의 다른 글
Order By 부분 정렬 구분인자에 따라 정렬 처리 Case 문 사용 (0) | 2008.04.29 |
---|---|
인덱스 최적화 팁 (0) | 2008.04.29 |
SQL Server 데이터베이스의 트랜잭션 로그가 예기치 않게 커지는 것을 막는 방법 (0) | 2008.04.29 |
SQL Server 2005 성능 문제 해결가이드 2 (0) | 2008.04.29 |
SQL Server 2005 성능 문제 해결가이드 (0) | 2008.04.29 |