계산된 일련의 범위 내에서 숫자가 발생하는 위치를 나타내는 Variant (String)를 반환합니다.
구문
Partition( number, start, stop, interval)
Partition 함수 구문에는 다음과 같은 인수가 사용됩니다.
인수 |
설명 |
number |
필수 요소입니다. 범위에 대해 평가하려는 정수입니다. |
시작 |
필수 요소입니다. 전체 숫자 범위의 시작 부분인 정수입니다. 숫자는 0보다 작을 수 없습니다. |
중지 |
필수 요소입니다. 전체 숫자 범위의 끝인 정수입니다. 숫자는 시작과 같거나 작을 수 없습니다. |
interval |
필수 요소입니다. 전체 숫자 범위 내의 파티션 크기를 지정하는 정수입니다(시작과맨 위 사이). |
주의
Partition 함수는 숫자가 떨어지는 특정 범위를 식별하고 해당 범위를 설명하는 Variant(String)를 반환합니다. Partition 함수는 쿼리에서 가장 유용합니다. 1에서 1000, 1001에서 2000까지의 주문 값 등 다양한 범위에 속하는 주문 수를 보여 주는 선택 쿼리를 만들 수 있습니다.
다음 표에서는 시작,중지 및 간격 인수의 세 집합을 사용하여 범위를 결정하는 방법을 보여 줍니다. 첫 번째 범위 및 마지막 범위 열에는 파티션 이 반환하는 내용이 표시됩니다. 범위는 lowvalue: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: " |
위에 표시된 표에서 세 번째 줄은 시작 및 중지 시 간격으로 균등하게 나눌 수 없는 숫자 집합을 정의할 때의 결과를 보여 줍니다. 마지막 범위는 간격이 20인 경우에도 중지(11개 숫자)로 확장됩니다.
필요한 경우 Partition 은 콜론의 왼쪽과 오른쪽에 있는 문자 수와 중지 문자가 하나 더해지도록 충분한 선행 공백이 있는 범위를 반환합니다. 이렇게 하면 파티 션 을 다른 숫자와 함께 사용하면 후속 정렬 작업 중에 결과 텍스트가 제대로 처리됩니다.
interval 이 1이면 시작 및 중지 인수에 관계없이 범위는 number:number입니다. 예를 들어 interval 이 1이면 숫자는 100이고 stop 은 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); |
"start"(40)에서 "stop"(240) 사이의 "interval"(20) 크기의 필드 "unitprice" 값에 대한 범위 집합을 만들고 각 범위에서 "unitprice"의 수를 계산합니다. PriceRange 열의 범위와 'Count' 열의 개수를 표시합니다. |
VBA 예제
이 예제에서는 화물 필드가 포함된 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);