WIDTH_BUCKET 스칼라 함수

WIDTH_BUCKET 함수는 동일 너비 막대 그래프를 작성하는 데 사용됩니다.

Read syntax diagramSkip visual syntax diagramWIDTH_BUCKET(expression ,bound1,bound2, num-buckets)

스키마는 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). bound1bound2와 같지 않아야 합니다(SQLSTATE 2201G).
num-buckets
bound1bound2 사이의 버킷 수를 지정하는 표현식입니다. 표현식은 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의 데이터 유형에 따라 다릅니다.

표 1. 결과의 데이터 유형
num-buckets의 데이터 유형 결과의 데이터 유형
SMALLINT SMALLINT
INTEGER INTEGER
BIGINT BIGINT
DECIMAL(p,s) DECIMAL(MIN(31, p-s+1), 0)
DECFLOAT(n) DECFLOAT(n)

이 함수는 expression이 제공된 bound1, bound2num-buckets에 속하는 버킷 번호를 리턴합니다. bound1 - bound2의 범위는 버킷 1부터 버킷 num-buckets까지의 num-buckets 버킷으로 나뉩니다.

임의의 인수가 널(NULL)일 수 있는 경우 결과는 널(NULL)일 수 있습니다. 인수가 널(NULL)이면 결과는 널(NULL) 값이 됩니다.

참고

  • bound1bound2보다 작은 경우 각 버킷은 실제 라인에서 왼쪽이 닫히고 오른쪽이 열린 간격입니다. expressionbound1보다 작은 경우 결과는 0이며 언더플로우 버킷을 나타냅니다. expressionbound2 이상인 경우 결과는 num-buckets + 1이며 오버플로우 버킷을 나타냅니다.
  • bound1bound2보다 큰 경우 각 버킷은 실제 라인에서 왼쪽이 닫히고 오른쪽이 열린 간격입니다. expressionbound1보다 큰 경우 결과는 0이며 언더플로우 버킷을 나타냅니다. expressionbound2 이하인 경우 결과는 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.