>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 학생 성과의 그룹화된 순위를 수행하는 방법은 무엇입니까?

MySQL에서 학생 성과의 그룹화된 순위를 수행하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-17 19:37:13281검색

How to Perform Grouped Ranking of Student Performance in MySQL?

MySQL 그룹 순위

학생 ID, 수업 ID, 성적을 포함한 학생 성과 데이터가 포함된 테이블이 있다고 가정해 보겠습니다. 각 수업 내에서 학생들의 순위를 매기면 학생들의 학습 성과에 대한 통찰력을 얻을 수 있습니다. 이는 변수, 하위 쿼리 및 비교 연산자의 조합을 사용하여 달성할 수 있습니다.

다음 쿼리는 @student 및 @class 변수를 사용합니다.

<code class="language-sql">SELECT id_student, id_class, grade,
   @student:=CASE WHEN @class = id_class THEN @student + 1 ELSE 0 END AS rn,
   @class:=id_class AS clset
FROM
  (SELECT @student:= -1) s,
  (SELECT @class:= -1) c,
  (SELECT *
   FROM mytable
   ORDER BY id_class, grade DESC, id_student
  ) t</code>

문의과정:

  1. 데이터 정렬: 가장 안쪽 하위 쿼리 (SELECT * FROM mytable ORDER BY id_class, grade DESC, id_student) 먼저 학급 ID로 정렬한 다음 성적 내림차순, 마지막으로 학생 ID로 정렬합니다. 이를 통해 같은 반 내에서 성적이 높은 학생이 더 높은 순위를 차지하게 됩니다.

  2. 변수 초기화: 하위 쿼리를 사용하여 @student 및 @class 변수를 -1로 초기화합니다.

  3. 과제 순위: SELECT 문의 CASE 문은 현재 클래스 ID가 이전 클래스 ID와 동일한지 여부를 확인합니다. 동일하면 @student가 1씩 증가하고, 그렇지 않으면 @student가 0으로 재설정됩니다. 이를 통해 각 클래스 내에서 순위가 ​​결정됩니다.

  4. @class 업데이트: @class 변수에는 현재 클래스 ID가 할당됩니다. CASE 문의 다음 줄에서 학생들이 같은 수업에 속하는지 확인하는 데 사용됩니다.

이 쿼리는 변수와 하위 쿼리를 사용하여 학생들을 각 학급으로 효과적으로 그룹화하고 그에 따라 순위를 지정하여 각 그룹 내에서 학생의 학습을 해석하는 의미 있는 방법을 제공합니다. 이 쿼리는 성적이 높은 학생의 순위가 높은 학생부터 성적 내림차순으로 정렬됩니다. 오름차순으로 정렬하고 싶으시면 ORDER BY id_class, grade DESC, id_studentORDER BY id_class, grade ASC, id_student로 바꿔주세요.

위 내용은 MySQL에서 학생 성과의 그룹화된 순위를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.