Partition 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

計算された一連の範囲内で値が出現する場所を示す Variant (String) を返します。

構文

Partition(number, start, stop, interval)

Partition 関数構文の引数は次のとおりです。

引数 説明
number 必須。 範囲に対して評価する整数です。
start 必須。 数値範囲全体の最初の整数です。 0 より小さい値は指定できません。
stop 必須。 数値範囲全体の最後の整数です。 数値を start 以下にすることはできません。
interval 必ず指定します。 数値の範囲全体 ( 開始停止の間) 内のパーティションのサイズを指定する整数。

解説

Partition 関数は、数値が該当する特定の範囲を特定し、その範囲を示すバリアント (文字列) を返します。 Partition 関数は、クエリで最も役に立ちます。 たとえば、さまざまな範囲 (1 から 1000、1001 から 2000 など) に含まれる注文の数を示す選択クエリを作成できます。

次の表は、 開始引数、 停止引数、 間隔 引数の 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 が定義した場合の結果を示しています。 間隔が 20 であっても、最後の範囲は停止 (11 桁の数字) まで拡張されます。

必要な場合、 Partition は 、コロンの左右に、 ストップに 1 を加えた文字と同じ文字数になるように、十分な数の先頭スペースを含む範囲を返します。 これにより、Partition を他の値と共に使った場合でも、結果のテキストは以降の並べ替え操作の間に正しく処理されます。

interval が 1 の場合、範囲は、開始引数と停止引数に関係なく、数値:数値です たとえば、 interval が 1、 数値 が 100、 stop が 1000 の場合、 パーティションは " 100: 100" を返します。

いずれかの引数が Null の場合、PartitionNull を返します。

クエリの例

Expression 結果
SELECT Partition(unitprice,40,240,20) AS PriceRange, count(productsales.unitprice) AS Count FROM productSales GROUP BY Partition(unitprice,40,240,20); "開始" (40) から "停止" (240) までのフィールド "単価" の値の範囲のセットを "間隔" (20) のサイズで等しく作成し、それぞれの範囲の "単価" の数を計算します。 列 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);