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