MySQL で Rank() over、dense_rank() over、row_number() over を使用する方法

PHPz
リリース: 2023-05-26 19:55:29
転載
1556 人が閲覧しました

MySQL で Rank() over、dense_rank() over、row_number() over を使用する方法

上記の質問に対して、今回使用した関数を使用しない場合、答えは次のようになります。つまり、MySQL がこの記事の関数を使用できない場合、置換のために次の文法ロジックを渡すことができます。

SELECT t1.Score as Score, ( SELECT COUNT(DISTINCT t2.Score) FROM Scores t2 WHERE t2.Score >= t1.Score ) AS `Rank` 
FROM Scores t1 ORDER BY t1.Score DESC
ログイン後にコピー

rank() over (ビジネスロジック)

関数: 指定した条件を調べて順位付け、条件が同じであれば順位も同じ、ランキングは不連続となります。

この関数は、生徒のランキングに使用できます。この場合、同じ成績を持つ 2 人の生徒が同点となり、次の生徒がそのポジションを空けることになります。つまり: 1 1 3 4 5 5 7

SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student
ログイン後にコピー

MySQL で Rank() over、dense_rank() over、row_number() over を使用する方法

##dense_rank() over (ビジネス ロジック)

関数:指定された条件以降のものを順位付けします 条件が同じ場合は同じ順位になります 順位は不連続です

注: これは、rank() over と同じ効果がありますが、違いは、dense_rank() over ランキングが密で連続的であることです。この機能を使用して生徒のランキングを決定します。同点の場合は 2 名が同順位となり、次の順位に基づいて次位の生徒が決定されます。つまり: 1 1 2 3 4 5 5 6

SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student
ログイン後にコピー

MySQL で Rank() over、dense_rank() over、row_number() over を使用する方法

row_number() over (ビジネス ロジック)

関数: Find out 条件を指定してランキングを行っており、同じ条件でもランキングが異なり、不連続なランキングとなります。

この関数は、クエリされた値が同じであっても、並列かどうかを考慮せずに連続的にソートします。つまり: 1 2 3 4 5 6

SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student
ログイン後にコピー

MySQL で Rank() over、dense_rank() over、row_number() over を使用する方法

Postscript

関数内のビジネス ロジックは複雑になる可能性がありますが、そうではありません。 ORDER BY に限定されますが、PARTITION BY を追加することもできます。

rreeee

MySQL で Rank() over、dense_rank() over、row_number() over を使用する方法

以上がMySQL で Rank() over、dense_rank() over、row_number() over を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!