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

推薦する

Centos7.4 サーバーへの Apache のインストールとインストール プロセス中に発生した問題の解決策

この記事では、CentOS 7.4 サーバーに Apache をインストールする方法と、インストール...

Centos7 システムでの python2 と python3 の共存

最初のステップは、Python のバージョン番号とインストール パスを確認することです。 上記のビュ...

JavaScript の instanceof メソッドの手動実装

1. instanceofの使用法instanceof演算子は、コンストラクター関数のprototy...

MySQL 自動インクリメント ID 枯渇の例

ディスプレイ定義IDテーブルに定義された自動増分IDが上限に達した場合、次のIDを申請する際に得られ...

Docker に Kong ゲートウェイをインストールする方法の例

1. Dockerネットワークを作成する docker ネットワーク作成 kong-net 2. デ...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

Webデザインチュートリアル(8):Webページの階層と空間デザイン

<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...

CentOSにDockerをインストールする方法

ここでは比較的簡単なインストール方法のみを紹介します。 1. yumを使用してインストールするyum...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

MySQL 無料インストール版 (zip) のインストールと設定の詳細なチュートリアル

この記事では、MySQL無料インストール版(zip)のインストールと設定のチュートリアルを参考までに...

MySQL 2級コンピュータ試験共通テストポイント 8つのMySQLデータベース設計最適化方法

MySQLデータベース設計の8つの最適化方法の詳細は次のとおりです。 1. 最も適切なフィールド属性...

Linux システムに docker をインストールし、ssh 経由で docker コンテナにログインする方法

注: 私はCentosを使ってdockerをインストールしていますステップ1: Dockerをインス...

Mysql5.7 のグループ連結関数を使用するときにデータが切り捨てられる問題に対する完璧な解決策

一昨日、本番環境でGROUP_CONCAT関数を使用して選択したデータが切り捨てられ、最大長が102...

ウェブデザイン:大量の素材の正確な配置と使用

3回の暗記により、大量の資材の正確な場所と目的を記憶でき、その使いやすさが向上します。 これは単なる...

MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL

序文トランザクション データ ディクショナリとアトミック DDL は、MySQL 8.0 で導入され...