PAGE
句では、戻すレコードのサブセットを指定します。
PAGE (<offset>, <count>)
句を使用して戻される結果レコード数を指定できます:
<offset>
引数は、スキップするレコード数を決定する整数です。 オフセット0(ゼロ)は最初の結果レコードを返し、オフセット8は9番目を返します。
<count>
引数は、返すレコードの数を決定する整数です。
<offset>
が使用可能なレコードの合計数より大きい場合、空の表が返されることに注意してください。 ただし、<offset>
+ <count>
が使用可能なレコードの合計数よりも大きい場合、可能な数のレコードが返されます。
次の例では、SalesRep属性別にレコードをグループ化して、11-20結果レコードを返します:
DEFINE Reps AS FROM ResellerState GROUP BY SalesRep PAGE (10,10)
PAGE
は中間結果に適用されます。PAGE(0, 10)
での文FROM
には最大10のソース・レコードがあります。
Top-K
Top-K問合せを作成するために、PAGE
句とORDER BY
句を組み合せて使用できます。 次の例では、売上合計の上位10人の営業担当が戻されます:
DEFINE Reps AS SELECT SUM(Amount) AS Total FROM ResellerState GROUP BY SalesRep ORDER BY Total DESC PAGE (0,10)
Percentile
PAGE
句はPERCENT
修飾子をサポートしています。 PERCENT
を指定すると、PAGE(33.3, 0.5) PERCENT
の例のように、小数オフセットとサイズが使用できます。 これにより、スキップするデータ・セットおよび返される部分を指定しました。
スキップされたレコード数はround(offset * COUNT / 100)
と同じです。
返されるレコードの数はround((offset + size) * COUNT / 100) - round(offset * COUNT / 100)
です。
DEFINE ModelYear AS SELECT SUM(Cost) AS Cost FROM ProductState GROUP BY Model, Year ORDER BY Cost DESC PAGE(0, 10) PERCENT
PERCENT
キーワードでは、オー・バー・ラップしていないオフセットでレコードが繰り返されることはありませんが、指定されたページ・サイズの結果数が同じ問合せで均一でない可能性があります。
たとえば、COUNT
= 6の場合は、次のようになります:
PAGE句 | 結果の動作が次の動作と同じです |
---|---|
PAGE (0, 25) PERCENT | PAGE (0, 2) |
PAGE (25, 25) PERCENT | PAGE (2, 1) |
PAGE (50, 25) PERCENT | PAGE (3, 2) |
PAGE (75, 25) PERCENT | PAGE (5, 1) |