計算された一連の範囲内で値が出現する場所を示す Variant (String) を返します。
構文
Partition( number, start, stop, interval)
Partition 関数構文の引数は次のとおりです。
引数 | 説明 |
---|---|
number |
必須。 範囲に対して評価する整数です。 |
start |
必須。 数値範囲全体の最初の整数です。 0 より小さい値は指定できません。 |
stop |
必須。 数値範囲全体の最後の整数です。 start 以下の値は指定できません。 |
interval |
必須。 数値範囲全体 (start から stop まで) の中の区画のサイズを指定する整数です。 |
解説
Partition 関数は、数値範囲全体の中で number が含まれる特定の範囲を特定し、その範囲を示す Variant (String) を返します。 Partition 関数は、クエリで最も役に立ちます。 たとえば、さまざまな範囲 (1 から 1000、1001 から 2000 など) に含まれる注文の数を示す選択クエリを作成できます。
次の表に、 start、 stop、およびintervalの3つのセットの引数を使用して、範囲を決定する方法を示します。 最初の範囲と最後の範囲の列は、どのようなパーティションが返されるかを示しています。 範囲は、 lowervalue:uppervalueによって表されます。この場合、範囲の下位端 (lowervalue) は、範囲のハイエンド (uppervalue) とコロン (:) で区切ります。
start | stop | interval | 最初の範囲より前 | 最初の範囲 | 最後の範囲 | 最後の範囲より後 |
---|---|---|---|---|---|---|
0 |
99 |
5 |
" :-1" |
" 0:4" |
" 95:99" |
" 100: " |
20 |
199 |
10 |
" :19" |
" 20:29" |
" 190:199" |
" 200: " |
100 |
1010 |
20 |
" :99" |
" 100:119" |
" 1000:1010" |
" 1011: " |
上の表の 3 行目は、start と stop によって定義される範囲が interval によって均等に分割できない場合の結果を示します。 最後の範囲は stop に達していますが (11 個の値)、interval は 20 です。
Partition は、コロンの左右の文字数が等しくなるように (stop の文字数より 1 だけ大きい文字数)、必要に応じて先頭にスペースを追加して返します。 これにより、Partition を他の値と共に使った場合でも、結果のテキストは以降の並べ替え操作の間に正しく処理されます。
interval が 1 の場合は、start 引数と stop 引数に関係なく、範囲は number:number になります。 たとえば、interval が 1、number が 100、stop が 1000 の場合、Partition は " 100: 100" を返します。
いずれかの引数が Null の場合、Partition は Null を返します。
クエリの例
式 | 結果 |
---|---|
[Partition (unitprice, 40240, 20)] を PriceRange、count (productsales) を、productSales GROUP BY Partition (単価、40240、20) の個数としてカウントします。 |
フィールド "unitprice" ("start") から "stop" (20) までの範囲の値の範囲を作成し、それぞれに等しい "interval" (20) のサイズを指定して、"unitprice" の数を計算します。 列 PriceRange の範囲と列 ' Count ' の個数を表示します。 |
VBA の例
この例では、Freight フィールドを含む Orders テーブルがあるものとします。 配送料が各範囲に含まれる注文の数をカウントする選択プロシージャを作成します。 最初に Partition 関数を使ってこれらの範囲を設定した後、SQL の Count 関数で各範囲の注文の数をカウントします。 この例の Partition 関数の引数は、start = 0、stop = 500、interval = 50 です。 したがって、最初の範囲は 0:49 であり、上限の 500 まで同様に分割されます。
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);
注: このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。 私たちの目的は、このコンテンツがお客様の役に立つようにすることです。 情報が役に立ったかどうか、ご意見をお寄せください。 参考までに、こちらから英語の記事をお読みいただけます。