Sybase IQ 12.7 User Manual

Page of 212
統計関数
 
76
 
Sybase IQ
これは次の指定に相当します。
( COUNT (*) OVER ( ws RANGE UNBOUNDED PRECEDING )
- COUNT (*) OVER ( ws RANGE CURRENT ROW ) + 1 )
この
 RANK 関数の変換では、論理的な集合 (RANGE) を使用しています。この
結果、同位のロー
 ( 順序付けカラムに同じ値が含まれているロー ) が複数ある
場合は、それらに同じランクが割り当てられます。パーティション内で異なる
値を持つ次のグループには、同位のローのランクよりも
 1 以上大きいランクが
割り当てられます。たとえば、順序付けカラムに
 10、20、20、20、30 という値
を含むローがある場合、
1 つ目のローのランクは 1 になり、2 つ目のローのラン
クは
 2 になります。3 つ目と 4 つ目のローのランクも 2 になりますが、5 つ目の
ローのランクは
 5 になります。ランクが 3 または 4 のローは存在しません。こ
のアルゴリズムは非連続型ランキング
 (sparse ranking) とも呼ばれます。
も参照してください。
DENSE_RANK() 関数
RANK 関数は同位のローがあるときに重複したランク値を割り当て非連続的
なランキングを返しますが、
DENSE_RANK 関数は抜けのないランキングを返
します。同位のローに対しては同じように等しいランク値が割り当てられます
が、このローのランクは、個々のローの順位ではなく、順序付けカラムに等し
い値を含んでいるローの集まりの順位を表しています。
RANK の例と同様に、
順序付けカラムに
 10、20、20、20、30 という値を含むローがある場合、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 リファレンス・マニュアル』の
も参照してください。