テーブルが学生であり、データが次のとおりであるとします。
MySQL の Oracle で Rank() 関数を実装する必要があります。つまり、グループ内での並べ替え、具体的には次のとおりです。生徒テーブル(名前)はスコアに従ってランク付けされます。
最初に新しいストアド プロシージャ Realize_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;
結果は次のとおりです:
注: ここでのランキングは、スコアが同じ場合は同じランキング。
関連記事:
hive は標準 SQL を使用してグループ内ソートを実装する
以上がMySQL_グループ内ソートの実装 - Oracleのrank()関数の機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。