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>
문의과정:
데이터 정렬: 가장 안쪽 하위 쿼리 (SELECT * FROM mytable ORDER BY id_class, grade DESC, id_student)
먼저 학급 ID로 정렬한 다음 성적 내림차순, 마지막으로 학생 ID로 정렬합니다. 이를 통해 같은 반 내에서 성적이 높은 학생이 더 높은 순위를 차지하게 됩니다.
변수 초기화: 하위 쿼리를 사용하여 @student 및 @class 변수를 -1로 초기화합니다.
과제 순위: SELECT
문의 CASE
문은 현재 클래스 ID가 이전 클래스 ID와 동일한지 여부를 확인합니다. 동일하면 @student가 1씩 증가하고, 그렇지 않으면 @student가 0으로 재설정됩니다. 이를 통해 각 클래스 내에서 순위가 결정됩니다.
@class 업데이트: @class 변수에는 현재 클래스 ID가 할당됩니다. CASE
문의 다음 줄에서 학생들이 같은 수업에 속하는지 확인하는 데 사용됩니다.
이 쿼리는 변수와 하위 쿼리를 사용하여 학생들을 각 학급으로 효과적으로 그룹화하고 그에 따라 순위를 지정하여 각 그룹 내에서 학생의 학습을 해석하는 의미 있는 방법을 제공합니다. 이 쿼리는 성적이 높은 학생의 순위가 높은 학생부터 성적 내림차순으로 정렬됩니다. 오름차순으로 정렬하고 싶으시면 ORDER BY id_class, grade DESC, id_student
를 ORDER BY id_class, grade ASC, id_student
로 바꿔주세요.
위 내용은 MySQL에서 학생 성과의 그룹화된 순위를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!