- 카테고리:
WIDTH_BUCKET¶
히스토그램 범위가 동일 크기의 간격으로 분할되는 등폭 히스토그램을 구성하며, 식의 값을 평가한 후 해당 값이 속하는 버킷 번호를 반환합니다. 이 함수는 정수 값 또는 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
입니다.식이
num_buckets + 1
보다 크거나 같으면max_value
입니다.
예¶
$200-600,000의 가격 범위에서 판매된 주택의 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 | +------------+-----------+-------------+