의 아이디로 순위를 잡아 :피벗 쿼리에서 순위를 확인하고 내가 좋아하는 MySQL의 테이블이 쿼리
샘플 데이터
나는 두 학생이 동일이있는 경우에도 수업 시간에 학생의 순위를 얻을 필요가ID STUDENT_ID Branch_id Class_id Exam_id Subject_id Numbers Date 1 653 5 1 1 8 60 2012-01-01 2 653 5 1 1 9 40 2012-01-01 3 653 5 1 1 10 80 2012-01-01 4 653 5 1 1 11 50 2012-01-01 5 653 5 1 1 12 65 2012-01-01 6 653 5 1 1 13 33 2012-01-01 7 653 5 1 1 15 86 2012-01-01 8 222 5 1 1 8 100 2012-01-01 9 222 5 1 1 9 80 2012-01-01 10 222 5 1 1 10 92 2012-01-01 11 222 5 1 1 11 50 2012-01-01 12 222 5 1 1 12 65 2012-01-01 13 222 5 1 1 13 33 2012-01-01 7 222 5 1 1 15 86 2012-01-01
을 마크 안에. 예를 들어 두 명의 학생이 600 점 중 600 점을 얻으면 두 점 모두 첫 번째 위치에 있음을 의미합니다.
나는 많은 사이트를 검색하고 내가 필요로하는 것이 작동한다는 것을 알았지 만 정확한 칼럼은 이미 표의 합계이지만 내 표에는 합계가 필요하다. .
이 모든 것이 단일 학생의 결과를 가져온 것입니다.
같은 데이터에서 모든 클래스의 결과를 가져올 때 두 가지가 필요합니다. 내가 좋아하는 콜 럼 쿼리에 행을 사용할 수 있도록 엑셀 형식으로 결과를 표시 열 피벗 쿼리에 대한 첫 번째 행 :
SELECT m.*
FROM (
select student_id, branch_id, class_id, numbers, exam_id, date
, sum(numbers*(1-abs(sign(subject_id-1)))) as subs1
, sum(numbers*(1-abs(sign(subject_id-2)))) as subs2
, sum(numbers*(1-abs(sign(subject_id-3)))) as subs3
, sum(numbers*(1-abs(sign(subject_id-4)))) as subs4
, sum(numbers*(1-abs(sign(subject_id-5)))) as subs5
, sum(numbers*(1-abs(sign(subject_id-6)))) as subs6
from results
GROUP BY student_id, branch_id, class_id, exam_id
) m
where branch_id = '6'
and class_id = '1'
and exam_id = '1'
and YEAR(date) = '2013'
클래스 쿼리에서
필수 결과처럼 :이 요청에 의한 좋은 결과를 얻었다
ID Name Math English Science Total Percent Position Rank
그리고 . 그러나 동일한 질문에있는 학생의 계급을 얻는 방법 아직도 순위에있는 문제가 있습니까?
아무도 도와 줄 수 있습니까?
몇 가지 샘플 데이터와 원하는 결과를 게시하십시오. – Quassnoi
Mr. MvG가 귀하의 질문에 답변이 없으므로 질문 순서가 바뀝니다. –