WIDTH_BUCKET 스칼라 함수
WIDTH_BUCKET 함수는 동일 너비 막대 그래프를 작성하는 데 사용됩니다.
스키마는 SYSIBM입니다.
- 표현식
- 버킷에 지정할 값을 지정하는 표현식입니다. 표현식은 내장 숫자, CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 표현식은 GRAPHIC 또는 VARGRAPHIC 데이터 유형이 될 수도 있습니다. CHAR, VARCHAR, GRAPHIC 및 VARGRAPHIC은 내재된 캐스팅을 사용하여 지원됩니다. 데이터 유형이 DECFLOAT인 경우 값은 NaN 또는 INFINITY와 같은 특수 값이 아니어야 합니다(SQLSTATE 42815).
- bound1
- 왼쪽 엔드 포인트를 지정하는 표현식입니다. 표현식은 내장 숫자, CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 표현식은 GRAPHIC 또는 VARGRAPHIC 데이터 유형이 될 수도 있습니다. CHAR, VARCHAR, GRAPHIC 및 VARGRAPHIC은 내재된 캐스팅을 사용하여 지원됩니다. 데이터 유형이 DECFLOAT인 경우 값은 NaN 또는 INFINITY와 같은 특수 값이 아니어야 합니다(SQLSTATE 42815).
- bound2
- 오른쪽 엔드 포인트를 지정하는 표현식입니다. 표현식은 내장 숫자, CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 표현식은 GRAPHIC 또는 VARGRAPHIC 데이터 유형이 될 수도 있습니다. CHAR, VARCHAR, GRAPHIC 및 VARGRAPHIC은 내재된 캐스팅을 사용하여 지원됩니다. 데이터 유형이 DECFLOAT인 경우 값은 NaN 또는 INFINITY와 같은 특수 값이 아니어야 합니다(SQLSTATE 42815). bound1은 bound2와 같지 않아야 합니다(SQLSTATE 2201G).
- num-buckets
- bound1과 bound2 사이의 버킷 수를 지정하는 표현식입니다. 표현식은 SMALLINT, INTEGER, BIGINT, DECIMAL, DECFLOAT, CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 표현식은 GRAPHIC 또는 VARGRAPHIC 데이터 유형이 될 수도 있습니다. CHAR, VARCHAR, GRAPHIC 및 VARGRAPHIC은 내재된 캐스팅을 사용하여 지원됩니다. 표현식이 CHAR, VARCHAR, GRAPHIC 또는 VARGRAPHIC인 경우 함수가 평가되기 전에 DECFLOAT(34)로 캐스트됩니다. 값이 DECIMAL 또는 DECFLOAT인 경우 소수점 왼쪽으로 0자리까지 잘립니다. 값은 0보다 커야 합니다(SQLSTATE 2201G). 데이터 유형이 DECFLOAT인 경우 값은 NaN 또는 INFINITY와 같은 특수 값이 아니어야 합니다(SQLSTATE 42815).
결과의 데이터 유형은 num-buckets의 데이터 유형에 따라 다릅니다.
num-buckets의 데이터 유형 | 결과의 데이터 유형 |
---|---|
SMALLINT | SMALLINT |
INTEGER | INTEGER |
BIGINT | BIGINT |
DECIMAL(p,s) | DECIMAL(MIN(31, p-s+1), 0) |
DECFLOAT(n) | DECFLOAT(n) |
이 함수는 expression이 제공된 bound1, bound2 및 num-buckets에 속하는 버킷 번호를 리턴합니다. bound1 - bound2의 범위는 버킷 1부터 버킷 num-buckets까지의 num-buckets 버킷으로 나뉩니다.
임의의 인수가 널(NULL)일 수 있는 경우 결과는 널(NULL)일 수 있습니다. 인수가 널(NULL)이면 결과는 널(NULL) 값이 됩니다.
참고
- bound1이 bound2보다 작은 경우 각 버킷은 실제 라인에서 왼쪽이 닫히고 오른쪽이 열린 간격입니다. expression이 bound1보다 작은 경우 결과는 0이며 언더플로우 버킷을 나타냅니다. expression이 bound2 이상인 경우 결과는 num-buckets + 1이며 오버플로우 버킷을 나타냅니다.
- bound1이 bound2보다 큰 경우 각 버킷은 실제 라인에서 왼쪽이 닫히고 오른쪽이 열린 간격입니다. expression이 bound1보다 큰 경우 결과는 0이며 언더플로우 버킷을 나타냅니다. expression이 bound2 이하인 경우 결과는 num-buckets + 1이며 오버플로우 버킷을 나타냅니다.
- num-buckets가 데이터 유형의 최대값인 경우 결과가 num-buckets + 1이면 오류가 리턴됩니다(SQLSTATE 22003).
- 여러 산술 연산을 사용하여 결과를 계산합니다. 이러한 산술 연산으로 인해 오버플로우가 발생하는 경우 오류가 리턴됩니다(SQLSTATE 22003).
예
EMPLOYEE 테이블을 사용하여
13개의 버킷으로 구분된 35000 - 100000 범위로 각 직원의 급여에
버킷을 지정하십시오.
SELECT EMPNO, SALARY, WIDTH_BUCKET(SALARY, 35000, 100000, 13)
FROM EMPLOYEE ORDER BY EMPNO
다음 범위를 사용하여
15개의 버킷이 지정됩니다.
- Bucket 0: salary < 35000
- Bucket 1: 35000 <= salary < 40000
- Bucket 2: 40000 <= salary < 45000
- Bucket 3: 45000 <= salary < 50000
- Bucket 4: 50000 <= salary < 55000
- Bucket 5: 55000 <= salary < 60000
- Bucket 6: 60000 <= salary < 65000
- Bucket 7: 65000 <= salary < 70000
- Bucket 8: 70000 <= salary < 75000
- Bucket 9: 75000 <= salary < 80000
- Bucket 10: 80000 <= salary < 85000
- Bucket 11: 85000 <= salary < 90000
- Bucket 12: 90000 <= salary < 95000
- Bucket 13: 95000 <= salary < 100000
- Bucket 14: salary >= 100000
쿼리에는 다음 출력이 있습니다.
EMPNO SALARY 3
------ ----------- -----------
000010 152750.00 14
000020 94250.00 12
000030 98250.00 13
000050 80175.00 10
000060 72250.00 8
000070 96170.00 13
000090 89750.00 11
000100 86150.00 11
000110 66500.00 7
000120 49250.00 3
000130 73800.00 8
000140 68420.00 7
000150 55280.00 5
000160 62250.00 6
000170 44680.00 2
000180 51340.00 4
000190 50450.00 4
000200 57740.00 5
000210 68270.00 7
000220 49840.00 3
000230 42180.00 2
000240 48760.00 3
000250 49180.00 3
000260 47250.00 3
000270 37380.00 1
000280 36250.00 1
000290 35340.00 1
000300 37750.00 1
000310 35900.00 1
000320 39950.00 1
000330 45370.00 3
000340 43840.00 2
200010 46500.00 3
200120 39250.00 1
200140 68420.00 7
200170 64680.00 6
200220 69840.00 7
200240 37760.00 1
200280 46250.00 3
200310 35900.00 1
200330 35370.00 1
200340 31840.00 0
42 record(s) selected.