4 つの主要な SQL ランキング関数 ROW_NUMBER、RANK、DENSE_RANK、NTILE の使用方法の紹介

4 つの主要な SQL ランキング関数 ROW_NUMBER、RANK、DENSE_RANK、NTILE の使用方法の紹介

1. ROW_NUMBER()

定義: ROW_NUMBER() 関数は、select によってクエリされたデータを並べ替え、各データにシリアル番号を追加するために使用されます。学生のスコアをランク付けするために使用することはできず、通常はページング クエリに使用されます。
たとえば、10 ~ 100 人の学生を対象に最初の 10 件のクエリを実行します。

例:

1.1 生徒の成績の分類

ここに写真の説明を記入してください

ここで、numberは各生徒のシリアル番号であり、studentScore(スコア)に従って逆順に降順になります。

1.2 2人目の生徒のスコア情報を取得する

ここに写真の説明を記入してください

ここで使用されるアイデアは、ページングクエリのアイデアです。元の SQL の外側にselect where t.number>=1 and t.number<=10別のレイヤーを追加して、最初の 10 人の学生のスコア情報を取得します。

2. ランク()

定義: RANK() 関数は、その名前が示すように、特定のフィールドをランク​​付けできるランキング関数です。ROW_NUMBER() と異なるのはなぜですか? ROW_NUMBER() は並べ替え用です。同じスコアの学生がいる場合、ROW_NUMBER() はそれらを順番に並べ替え、シリアル番号は異なりますが、Rank() は同じではなく、ランキングは同じになります。以下の例を見てみましょう。

2.1 生徒の成績の順位付け

ここに写真の説明を記入してください

ここで、ROW_NUMBER() と RANK() が同じであることがわかります。生徒の得点が異なるため、順位付けと並び順は同じです。以下を変更すると違いがわかります。

ここに写真の説明を記入してください

2 人の生徒のスコアが同じ場合、変更が起こります。 RANK() は 1 2 2 ですが、ROW_NUMBER() は依然として 1 2 3 です。これが RANK() と ROW_NUMBER() の違いです。

3.密度_RANK()

定義: DENSE_RANK() 関数もランキング関数です。フィールドをランク​​付けする点では RANK() に似ています。では、RANK() との違いは何でしょうか?例をご覧ください:

例:

ここに写真の説明を記入してください

DENSE_RANK() と RANK() の違いはランキングの連続性です。DENSE_RANK() は連続的ですが、RANK() はジャンプランキングなので、一般的に使用されるランキング関数は RANK() です。

4.NTILE()

定義: NTILE() 関数は、順序付けられたパーティション内の行を指定された数のグループに分散します。各グループには、いわゆる「パーティション」のように 1 から始まる番号が付けられ、複数のゾーンに分割され、ゾーン内にゾーンがいくつあるかが示されます。

例:

ここに写真の説明を記入してください

ここでは、クエリが 3 回実行されています。1 回目は 1 つの「ゾーン」に分割されたため、クエリ結果の番号はすべて 1 でした。2 回目は 2 つのゾーンに分割され、クエリ結果は 1 1 2 でした。これは、最初の「ゾーン」には 1 1 という 2 つの番号付きデータがあり、2 番目の「ゾーン」にはデータ 2 のみがあることを意味します。

この時点で、SQL ランキングの問題の説明は終了です。次回は、SQL ランキング ステートメントについて詳しく紹介します。

4つの主要なSQLランキング関数ROW_NUMBER、RANK、DENSE_RANK、NTILEの使用に関するこの記事はこれで終わりです。SQLランキング関数ROW_NUMBER、RANK、DENSE_RANK、NTILEの使用に関する詳細については、123WORDPRESS.COMの以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MYSQL row_number() および over() 関数の詳細な使用方法
  • PostgreSQL ROW_NUMBER() OVER() の使用方法の説明
  • postgreSQL での row_number() と distinct の使用
  • Postgresql の rank() over、dense_rank()、row_number() の使用法の違い
  • MySQLにおけるrow_numberの実装プロセス
  • SQL Server の row_number 関数の一般的な使用例の詳細
  • SQL ROW_NUMBER() および OVER() メソッドのケーススタディ

<<:  Ubuntu インストール cuda10.1 ドライバ実装手順

>>:  Vue はアップロードされた画像に透かしを追加する機能を実装します

推薦する

MySQLテーブル構造を変更するコマンドを表示する

簡単な説明エディターはデータベースのエンコードが間違っているために問題に遭遇することが多く、これは頭...

Vue の新しいおもちゃ VueUse の具体的な使い方

目次序文VueUseとは使いやすいおなじみの手ぶれ補正やスロットル機能もありますグローバル状態を共有...

Bash スクリプトを使用して Linux のメモリ使用量を監視する方法

序文Linux システムのパフォーマンスを監視するために使用できるオープンソースの監視ツールが市場に...

Vue3+Vue-cli4 プロジェクトで Tencent スライダー検証コードを使用する方法

導入:従来の画像検証コードと比較して、スライダー検証コードには次の利点があります。サーバーは検証コー...

Dockerデータボリューム操作の実装

データボリュームの使用開始先ほどのケースでは、ホストからコンテナにデータをコピーする必要がある場合、...

Vue のレスポンシブ原則と双方向データの詳細な分析

応答性を実現するための object.defineProperty の理解observe/watch...

MySQL で遅い SQL 文を見つける方法

MySQL で遅い SQL ステートメントを見つけるにはどうすればよいでしょうか?これは、多くの人を...

CSS3で跳ねるボールのアニメーションを実現

私は通常、大手ウェブサイトの特別ページや製品リリースページを訪問するのが好きです。なぜなら、たくさん...

HTML でスクロールバーを使用する際のヒントを共有する

今日、牛南ニュースリリースシステムについて学んでいたとき、牛南先生はスクロールバーに関するいくつかの...

Linux でのインストール中にソフトウェア パッケージの依存関係レポートに関連する問題の解決策

目次背景1) yumのkeepchche機能を有効にする: 方法1 2) yum-utils ソフト...

MySQL GTID マスターとスレーブの不一致を修復するソリューション

目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...

MySQL でタイムスタンプを日付に変換する例

序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...

Linux で MySQL のルート パスワードを変更する方法

序文このサービスは数か月前からMySQLに導入されています。私の仕事は基本的にターミナルで行われるた...

JavaScriptでマクロを使用する方法

言語では、DSL を実装するためにマクロがよく使用されます。マクロを使用すると、開発者は JSX 構...

JSON.parse と JSON.stringify の使い方の詳細な説明

目次JSON.パースJSON.parse 構文リバイバーパラメータJSON.parse の機能その他...