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 はアップロードされた画像に透かしを追加する機能を実装します

推薦する

ZabbixはSNMPに基づいてLinuxホストを監視します

序文: Linux ホストは、エージェント プログラムをインストールする場合でも、SNMP を使用す...

Navicat Premium が MySQL 8.0 に接続してエラー「1251」を報告する問題を解決する方法の分析

長い間何もしていなかった人は、努力をすると一生懸命働いていると思うようになります。 1. 問題Nav...

JavaScript の基本演算子

目次1. オペレーター要約する1. オペレーター演算子は、代入、比較、算術演算などの機能を実装するた...

React ルーティング リンク構成の詳細

1. 属性へのリンク(1)ルーティングパスを配置する(2)指定された形式でオブジェクトを配置する{パ...

nginx の場所に複数の Proxy_pass メソッドがある

1. まず、nginxの位置情報に関する関連知識を確認しましょう1) 位置マッチング手順: ~ #波...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...

VMware CentOS 仮想マシンのインストールとネットワーク構成のグラフィックチュートリアル

1. CentOSイメージをダウンロードする1.1 ダウンロードウェブサイトhttp://mirro...

MySQLクエリ最適化プロセスを理解する

目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...

JSにおけるデータ型の正しい判定方法の例

目次序文typeof は型を正しく判別できますか? instanceof は型を正しく判別できますか...

HTML 選択オプション デフォルトの選択方法

オプションに属性 selected = "selected" を追加すると、それ...

Reactのコンポーネント共同利用実装

目次ネスティング親子コンポーネント通信ブラザーコンポーネント通信撤回するReact の Linked...

古典的なJavaScriptの再帰ケースの質問の詳細な分析

目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....

Linux コマンド クエリ アプレットでの WePY クラウド開発の実践

みなさんこんにちは。今日は Linux コマンド クエリ アプレットでの WePY クラウド開発の実...

ウェブデザインのグラフィック構成と組版機能の紹介

すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...

MySQLテーブル名の大文字と小文字を区別しない設定方法の詳細な説明

デフォルトでは、Linux の MySQL はテーブル名の大文字と小文字を区別します。 MySQL ...