집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 그룹화된 순위를 수행하는 방법은 무엇입니까?
MySQL 그룹 순위 상세 설명
데이터베이스 관리자는 그룹화된 데이터를 정렬하고 순위를 지정해야 하는 경우가 많습니다. 예를 들어, 학급 및 학생 정보는 물론 성적이 포함된 학생 성과 테이블을 학급별로 그룹화하고 각 학급에서 학생 성과의 순위를 매겨야 합니다.
MySQL은 다음 방법을 통해 그룹 순위를 얻을 수 있습니다.
<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, @class := -1) AS init_vars, -- 初始化变量 (SELECT * FROM mytable ORDER BY id_class, grade DESC -- 按班级和成绩降序排序 ) AS t</code>
이 쿼리는 다음과 같이 작동합니다.
변수 초기화: 하위 쿼리 (SELECT @student:= -1, @class := -1) AS init_vars
를 사용하여 사용자 정의 변수 @student
및 @class
를 -1로 초기화합니다.
그룹 반복: 쿼리는 t
및 id_class
을 기준으로 내림차순으로 정렬된 임시 테이블 grade
에서 데이터를 선택합니다.
순위 계산: CASE
문은 id_class
에 저장된 현재 @class
과 이전 id_class
을 기준으로 각 학생의 순위(rn)를 계산합니다. id_class
이 변경되면 @student
은 0으로 재설정되고, 그렇지 않으면 @student
이 증가됩니다.
업데이트 클래스 변수 : @class
는 다음 반복을 위해 id_class
의 현재 값으로 업데이트됩니다.
쿼리 결과는 각 학급의 학생 목록이며 성적에 따라 내림차순, 학급 순위에 따라 정렬됩니다. 이 방법은 그룹화된 순위를 효율적으로 수행하므로 그룹화된 데이터와 관련된 복잡한 시나리오에서 정렬되고 순위가 지정된 데이터를 쉽게 검색할 수 있습니다. 참고로 여기서 정렬 기준은 grade
내림차순이며, 정렬 필드와 순서는 실제 필요에 따라 조정될 수 있습니다.
위 내용은 MySQL에서 그룹화된 순위를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!