SQL DENSE_RANK() 関数

Sql Dense Rank Guan Shu



ウィンドウ関数は SQL の重要な機能であり、SQL データベースでの複雑なデータ計算と操作において基本的な役割を果たします。 SQL ウィンドウ関数の関数の 1 つは、dense_rank() です。

DENSE_RANK() 関数を使用すると、もう 1 つの指定された列の値に基づいて、結果セット内の各行に一意のランクを割り当てることができます。これは、rank() 関数に非常に似ていますが、関数が重複レコードを処理する方法が若干異なります。

このチュートリアルでは、この関数の仕組み、提供される構文、データベースでの使用方法について説明します。







使い方

まず、この関数がどのように機能するかを説明します。この関数は高レベルであり、基礎となる実装については説明できないことに留意してください。



この関数は、結果セットの各行にランク 1 から始まり、列の一意の値ごとに 1 ずつ増加するランクを割り当てることによって機能します。



指定された列内の類似した値 (重複) を持つ行には同じランクが割り当てられ、異なる値を持つ次の行には、次に使用可能なランクが隙間なく割り当てられます。





前述したように、この関数は重複した値が存在するギャップを残さないため、rank() 関数とは異なります。

Density_rank() 関数の一般的な使用法は、ランキング操作を実行することです。たとえば、上位 N 件のレコードなどを検索するために使用できます。



関数の構文:

以下に、dense_rank() 関数の構文を説明します。

DENSE_RANK() OVER (

[PARTITION BY パーティション式, ...]

注文 BY 並べ替え式 [ASC |説明]、...

)

指定された構文では次のようになります。

  1. まず、dense_rank() 関数自体から始めます。
  2. OVER 句は、ウィンドウ関数仕様の開始を示します。これは、結果セット内でランキングがどのように適用されるかを定義します。
  3. PARTITION BY Partition_expression は、結果のセットを 1 つ以上の列に基づいてグループまたはパーティションに分割できるようにするオプションの句です。ランキングは各パーティションに個別に適用され、新しいパーティションでランクがリセットされます。
  4. ORDER BY sort_expression は、結果のパーティション内のデータをソートするために使用する順序を指定します。

サンプルデータ

Density_rank() 関数の使用方法を示すために、サンプル データを含むテーブルから始めましょう。この例では、次のようなサンプルの「注文」テーブルを使用します。

例 1: Dense_Rank() 関数の使用法

Density_rank() 関数を使用して、結果の注文を価格に基づいてランク付けできます。次のクエリの例を考えてみましょう。

選択する

注文ID、

customer_ユーザー名、

製品_購入済み、

DENSE_RANK() OVER (

注文 による

価格ディスク

) 価格_ランク

から

命令する。

指定された例では、dense_rank() 関数を使用して、注文の価格に基づいてデータをランク付けします。データをグループ化しないため、PARTITION BY 句を省略します。

結果の出力は次のようになります。

例 2: PARTITION BY

PARTITION BY 句を追加して、購入した製品などに基づいてデータをさまざまなセグメントにグループ化することもできます。

クエリの例は次のとおりです。

選択する

注文ID、

customer_ユーザー名、

製品_購入済み、

DENSE_RANK() OVER (

product_purchased ごとにパーティション化する

注文 による

価格ディスク

) 価格_ランク

から

命令する。

これにより、結果のグループに基づいてデータがさまざまなグループにグループ化され、各グループの項目にランクが適用されます。

結論

この投稿では、SQL で Density_rank() ウィンドウ関数を使用して操作し、特定の列に基づいて値にランクを割り当てる方法の基礎を学びました。