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이 리턴된다.
출처 : 코리아인터넷닷컴
예를 들어 아래와 같은 순위 결과를 출력하고 싶다면 어떤 쿼리를 활용해야 할까?
성적 테이블
순위 이름 점수
1 김진수 99
2 김영은 87
2 김한영 87
4 정진은 65
위의 표에서 나타나듯 김영은씨와 김한영씨는 같은 점수이다. 결국 공동2위로 순위표가 정상으로 출력되었다.
위와 같은 결과를 출력시키기 위해서는 그 사람의 점수보다 성적이 좋은 사람이 몇 명 있는지를 계산해야 한다.
서브쿼리를 활용하여 기술하면 위와 같은 올바른 순위 정렬 결과를 얻을 수 있다.
SELECT ( SELECT COUNT (*) + 1 FROM 성적 WHERE 성적.점수 > S.점수),S.이름, S.점수 FROM 성적 S
먼저 서브 쿼리를 통해 순위값을 구한다. 자신보다 성적이 좋은 사람이 없으면 COUNT(*)의 값은 0이되고
결국 +1을 통해 순위에 1이 리턴된다.
출처 : 코리아인터넷닷컴
반응형
'홈페이지 제작 > PHP, MySQL' 카테고리의 다른 글
정규표현식 (0) | 2005.05.03 |
---|---|
[PHP] 중복없는 무작위 숫자만들기 (로또복권) (0) | 2004.08.11 |
[PHP] 정규 표현식 예제 (0) | 2004.07.28 |
[PHP] 숫자관련 함수 (0) | 2004.05.10 |
[PHP] 날짜관련 함수 사용방법 (0) | 2004.03.22 |