Sybase 12.7 manual Dense_Rank 関数, Sybase IQ

Models: 12.7

1 212
Download 212 pages 60.16 Kb
Page 92
Image 92
DENSE_RANK() 関数

統計関数

これは次の指定に相当します。

( COUNT (*) OVER ( ws RANGE UNBOUNDED PRECEDING ) - COUNT (*) OVER ( ws RANGE CURRENT ROW ) + 1 )

この RANK 関数の変換では、論理的な集合 (RANGE) を使用しています。この 結果、同位のロー ( 順序付けカラムに同じ値が含まれているロー ) が複数ある 場合は、それらに同じランクが割り当てられます。パーティション内で異なる 値を持つ次のグループには、同位のローのランクよりも 1 以上大きいランクが 割り当てられます。たとえば、順序付けカラムに 1020202030 という値 を含むローがある場合、1 つ目のローのランクは 1 になり、2 つ目のローのラン クは 2 になります。3 つ目と 4 つ目のローのランクも 2 になりますが、5 つ目の ローのランクは 5 になります。ランクが 3 または 4 のローは存在しません。こ のアルゴリズムは非連続型ランキング (sparse ranking) とも呼ばれます。

Sybase IQ リファレンス・マニュアル』の「第 5 SQL 関数」RANK 関 数 [ 統計 ]も参照してください。

DENSE_RANK() 関数

RANK 関数は同位のローがあるときに重複したランク値を割り当て非連続的 なランキングを返しますが、DENSE_RANK 関数は抜けのないランキングを返 します。同位のローに対しては同じように等しいランク値が割り当てられます が、このローのランクは、個々のローの順位ではなく、順序付けカラムに等し い値を含んでいるローの集まりの順位を表しています。RANK の例と同様に、 順序付けカラムに 1020202030 という値を含むローがある場合、1 つ 目のローのランクは同じく 1 となり、2 つ目のローおよび 3 つ目、4 つ目のロー のランクも同じく 2 となります。しかし、最後のローのランクは 5 ではなく 3 になります。

DENSE_RANK も、構文変換を通じて計算されます。

DENSE_RANK() OVER ws

これは次の指定に相当します。

COUNT ( DISTINCT ROW ( expr_1, . . ., expr_n ) )

OVER ( ws RANGE UNBOUNDED PRECEDING )

この例では、expr_1 から expr_n の部分が、ウィンドウ w1 のソート指定リスト に含まれている値の式のリストを表しています。

Sybase IQ リファレンス・マニュアル』の「第 5 SQL 関数」DENSE_RANK 関数 [ 統計 ]も参照してください。

76

Sybase IQ

Page 92
Image 92
Sybase 12.7 manual Dense_Rank 関数, Sybase IQ