Возвращает значение типа Variant (String), указывающее, в каком диапазоне из ряда рассчитываемых диапазонов находится число.
Синтаксис
Partition( число, начало, конец, интервал)
Функция Partition имеет аргументы, указанные ниже.
Аргумент |
Описание |
число |
Обязательный аргумент. Целое число, которое нужно отнести к одному из диапазонов. |
начало |
Обязательный аргумент. Целое число, представляющее начало совокупного диапазона чисел. Должно быть не меньше 0. |
конец |
Обязательный аргумент. Целое число, представляющее конец совокупного диапазона чисел. Должно быть больше значения аргумента начало. |
интервал |
Обязательный аргумент. Целое число, которое задает размер разделов в совокупном диапазоне чисел (между началом и концом). |
Замечания
Функция Partition определяет диапазон, в котором находится значение аргумента число, и возвращает значение типа Variant (String), описывающее этот диапазон. Чаще всего функция Partition используется в запросах. Например, можно создать запрос на выборку, чтобы выяснить распределение заказов по диапазонам в зависимости от их размера — от 1 до 1000, от 1001 до 2000 и т. д.
В приведенной ниже таблице показано определение диапазонов с использованием трех вариантов наборов аргументов начало, конец и интервал. В столбцах "Первый диапазон" и "Последний диапазон" показаны возвращаемые функцией Partition значения. Эти диапазоны представлены в виде нижнее значение:верхнее значение, где конец диапазона (нижнее значение) отделен от его начала (верхнего значения) двоеточием (:).
Начало |
Конец |
Интервал |
Перед первым |
Первый диапазон |
Последний диапазон |
После последнего |
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: " |
В третьей строке таблицы диапазон чисел, определенный аргументами начало и конец, не делится без остатка на значение аргумента интервал. Последний интервал ограничен значением аргумента конец (11 чисел), хотя значение аргумента интервал составляет 20.
При необходимости функция Partition возвращает строку диапазона с начальными или конечными пробелами, чтобы количество знаков слева и справа от двоеточия равнялось количеству знаков в числе, превышающем значение аргумента конец на единицу. Это нужно для правильной сортировки данных, полученных при использовании функции Partition, вместе с другими числами.
Если значение аргумента интервал равно 1, то независимо от значений аргументов начало и конец возвращается диапазон число:число. Например, если значение аргумента интервал равно 1, аргумента число — 100, а аргумента конец — 1000, функция Partition возвратит строку " 100: 100".
Если любая из частей равна NULL, функция Partition возвращает NULL.
Примеры запросов
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
В этом примере предполагается, что у вас есть таблица Orders (Заказы), содержащая поле Freight (СтоимостьДоставки). Создается запрос на выборку, где рассчитывается количество заказов в нескольких диапазонах стоимости доставки. Эти диапазоны задаются с помощью функции Partition, после чего функция SQL Count подсчитывает количество заказов в каждом из диапазонов. В данном примере функция Partition имеет следующие значения аргументов: начало — 0, конец — 500, интервал — 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);