ホームページ >データベース >mysql チュートリアル >MySQL_グループ内ソートの実装 - Oracleのrank()関数の機能

MySQL_グループ内ソートの実装 - Oracleのrank()関数の機能

php是最好的语言
php是最好的语言オリジナル
2018-08-02 13:55:493378ブラウズ

テーブルが学生であり、データが次のとおりであるとします。

MySQL_グループ内ソートの実装 - Oracleのrank()関数の機能

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;

結果は次のとおりです:

MySQL_グループ内ソートの実装 - Oracleのrank()関数の機能

注: ここでのランキングは、スコアが同じ場合は同じランキング。

関連記事:

MySQL のランク関数の実装_MySQL

hive は標準 SQL を使用してグループ内ソートを実装する

以上がMySQL_グループ内ソートの実装 - Oracleのrank()関数の機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。