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

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

Linda Hamilton
Linda Hamilton원래의
2025-01-17 19:41:14348검색

How to Perform Grouped Ranking in 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>

이 쿼리는 다음과 같이 작동합니다.

  1. 변수 초기화: 하위 쿼리 (SELECT @student:= -1, @class := -1) AS init_vars를 사용하여 사용자 정의 변수 @student@class를 -1로 초기화합니다.

  2. 그룹 반복: 쿼리는 tid_class을 기준으로 내림차순으로 정렬된 임시 테이블 grade에서 데이터를 선택합니다.

  3. 순위 계산: CASE 문은 id_class에 저장된 현재 @class과 이전 id_class을 기준으로 각 학생의 순위(rn)를 계산합니다. id_class이 변경되면 @student은 0으로 재설정되고, 그렇지 않으면 @student이 증가됩니다.

  4. 업데이트 클래스 변수 : @class는 다음 반복을 위해 id_class의 현재 값으로 업데이트됩니다.

쿼리 결과는 각 학급의 학생 목록이며 성적에 따라 내림차순, 학급 순위에 따라 정렬됩니다. 이 방법은 그룹화된 순위를 효율적으로 수행하므로 그룹화된 데이터와 관련된 복잡한 시나리오에서 정렬되고 순위가 지정된 데이터를 쉽게 검색할 수 있습니다. 참고로 여기서 정렬 기준은 grade 내림차순이며, 정렬 필드와 순서는 실제 필요에 따라 조정될 수 있습니다.

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

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