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