Partition 関数

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

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

構文

Partition(number, start, stop, interval)

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

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

解説

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

次の表は、 開始停止および間隔 の引数の 3 つのセットを使用して範囲を決定する方法を示しています。 [最初の範囲] 列と [最後の範囲] 列には、 パーティション から返される値が表示されます。 範囲は lowervalue:uppervalue で表されます。ここで、範囲の下限 (下値) は、範囲の上端 (上値) からコロン (:) で区切られます。

開始 停止 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 行目は、間隔で均等に除算できない数値のセットを定義するときに、開始停止の結果を示しています。 最後の範囲は、間隔が 20 であっても、停止 (11 個の数値) まで拡張されます。

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

interval が 1 の場合、引数の開始停止に関係なく、範囲は number:number です。 たとえば、 interval が 1、 数値 が 100、 stop が 1000 の場合、 Partition は "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); "unitprice" フィールドの値の範囲のセットを "start"(40) から "stop"(240) に等しい "interval"(20) サイズで作成し、それぞれの範囲の "unitprice" の数を計算します。 列 PriceRange に範囲を表示し、列 'Count' に 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);