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