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