2014-01-14 4 views
2

테이블 학생 (열 : StudentID, ClassID) 보유. 대부분의 학생과 함께 상위 3 개 학급을 찾고 있습니다. 같은 분량의 학생이라면 반드시 기재해야합니다.상위 금액 선택 (일부 레코드는 같은 금액으로 계산 됨)

SELECT 
DISTINCT ClassID, COUNT(StudentID) 
FROM 
Student 
GROUP BY ClassID 
ORDER By COUNT(StudentID) 
DESC Limit 3 

하지만 같은 양의 출력이 나던 목록은, 사실, 5 개 개의 번호가있는 경우 : 40,20,20,10,5는 40,20,20을 나열합니다은 다음 시도하고있다. 그러나 결과 40,20,20,10로 상위 3 개를 나열하고 싶습니다.

는이 문제를 해결하는 데 사용할 수있는 MySQL의 순위 뭔가가 있는지 궁금 해서요 ..

+0

'SELECT'할 값이 다양하기 때문에 저장 프로 시저 또는 SQL 문의 외부 분석에 더 적합합니다. – DopeGhoti

+0

missclick .......... – NewInTheBusiness

답변

3
당신은 최고 3 개의 고유 한 카운트 값으로 가입 할 수

:

SELECT A.* 
FROM (
    SELECT COUNT(StudentID) AS student_count, ClassID 
    FROM Student 
    GROUP BY ClassID 
) A INNER JOIN (
    SELECT DISTINCT COUNT(StudentID) AS student_count 
    FROM Student 
    GROUP BY ClassID 
    ORDER BY student_count DESC 
    LIMIT 3 
) B ON A.student_count = B.student_count 

THE SQL FIDDLE.