>  기사  >  데이터 베이스  >  MySQL_그룹 내 정렬 구현 - Oracle의 Rank() 함수 기능

MySQL_그룹 내 정렬 구현 - Oracle의 Rank() 함수 기능

php是最好的语言
php是最好的语言원래의
2018-08-02 13:55:493283검색

테이블이 학생이고 데이터가 다음과 같다고 가정합니다.

MySQL_그룹 내 정렬 구현 - Oracle의 Rank() 함수 기능

MySQL의 Oracle에서 순위() 함수, 즉 그룹 내 정렬을 구현해야 합니다. 구체적으로 다음과 같습니다. 학생 테이블(이름)은 점수에 따라 순위가 매겨집니다.

  먼저 새로운 저장 프로시저인 acquire_rank_in_MySQL을 생성합니다. 코드는 다음과 같습니다.

DROP PROCEDURE IF EXISTS realize_rank_in_MySQL;
DELIMITER ;;
CREATE PROCEDURE realize_rank_in_MySQL()
BEGIN
    DECLARE i int;
    SET i = 0;
    WHILE i < (select count(DISTINCT course) from student) DO
            SET @ROW =0;
            INSERT INTO student_rank
            SELECT *, (@ROW:=@ROW+1) AS rank FROM student
            WHERE course=(select DISTINCT course from student limit i,1)
            ORDER BY score DESC;
            set i = i + 1;
    END WHILE;
END
;;
DELIMITER ;

그런 다음 다음 쿼리 문을 입력합니다.

drop table if exists student_rank;
create table student_rank like student;
alter table student_rank add rank int;
call realize_rank_in_MySQL;
select * from student_rank;

  결과는 다음과 같습니다.

MySQL_그룹 내 정렬 구현 - Oracle의 Rank() 함수 기능

참고: 여기 순위는 점수가 같으면 같은 순위입니다.

관련 기사:

MySQL의 순위 함수 구현_MySQL

hive는 표준 SQL을 사용하여 그룹 내 정렬을 구현합니다.

위 내용은 MySQL_그룹 내 정렬 구현 - Oracle의 Rank() 함수 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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