Sybase 12.7 Manuale Utente
統計関数
76
Sybase IQ
これは次の指定に相当します。
( COUNT (*) OVER ( ws RANGE UNBOUNDED PRECEDING )
- COUNT (*) OVER ( ws RANGE CURRENT ROW ) + 1 )
- 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) とも呼ばれます。
『
Sybase IQ リファレンス・マニュアル』の
も参照してください。
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 リファレンス・マニュアル』の
も参照してください。