WIDTH_BUCKET

WIDTH_BUCKET

등폭 히스토그램(equi-width histogram)을 구성해요. 히스토그램 범위가 같은 크기의 구간으로 나뉘고, 평가된 후 표현식의 값이 속하는 버킷 번호를 반환해요. 이 함수는 정수 값 또는 null(입력 중 하나라도 null이면)을 반환해요.

출처: Snowflake SQL Reference - WIDTH_BUCKET

본문

구문

WIDTH_BUCKET( expr , min_value , max_value , num_buckets )

인자

expr 히스토그램이 만들어지는 표현식이에요. 이 표현식은 숫자 값 또는 숫자 값으로 암시적으로 변환될 수 있는 값으로 평가되어야 해요.

값은 -(2^53 - 1)부터 2^53 - 1(포함) 범위 안에 있어야 해요.

min_value 및 max_value 표현식의 허용 범위의 하한과 상한 끝점이에요. 끝점도 숫자 값으로 평가되어야 하고 서로 같지 않아야 해요.

하한과 상한 끝점은 -(2^53 - 1)부터 2^53 - 1(포함) 범위 안에 있어야 해요. 또한 이 점들 사이의 차이는 2^53보다 작아야 해요(즉 abs(max_value - min_value) < 2^53).

num_buckets 원하는 버킷 수로, 양의 정수 값이어야 해요. 표현식의 값은 각 버킷에 할당되고 함수는 그에 해당하는 버킷 번호를 반환해요.

표현식이 범위 밖에 놓이면 함수는 다음을 반환해요:

  • 표현식이 min_value보다 작으면 0.
  • 표현식이 max_value보다 크거나 같으면 num_buckets + 1.

예시

$200–600k 가격 범위에서 판매된 주택의 price 컬럼에 4개 버킷 히스토그램을 만들고, 판매 날짜순으로 정렬해요. 함수는 집합의 각 값에 대한 버킷 번호(SALES GROUP)를 반환해요.

테이블을 만들고 채워요:

CREATE TABLE home_sales (
    sale_date DATE,
    price NUMBER(11, 2)
    );
INSERT INTO home_sales (sale_date, price) VALUES
    (2013-08-01::DATE, 290000.00),
    (2014-02-01::DATE, 320000.00),
    (2015-04-01::DATE, 399999.99),
    (2016-04-01::DATE, 400000.00),
    (2017-04-01::DATE, 470000.00),
    (2018-04-01::DATE, 510000.00);

테이블을 쿼리하고 WIDTH_BUCKET()을 호출해요:

SELECT
    sale_date,
    price,
    WIDTH_BUCKET(price, 200000, 600000, 4) AS SALES GROUP
  FROM home_sales
  ORDER BY sale_date;
+------------+-----------+-------------+
| SALE_DATE  |     PRICE | SALES GROUP |
|------------+-----------+-------------|
| 2013-08-01 | 290000.00 |           1 |
| 2014-02-01 | 320000.00 |           2 |
| 2015-04-01 | 399999.99 |           2 |
| 2016-04-01 | 400000.00 |           3 |
| 2017-04-01 | 470000.00 |           3 |
| 2018-04-01 | 510000.00 |           4 |
+------------+-----------+-------------+

더 알아보기 (Learn more)