Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

WIDTH_BUCKET

문법

MAIN

width_bucket::=
Description of width_bucket.gif follows

그림 설명

목적

MAIN

WIDTH_BUCKET함수는 동일한 넓이를 갖는 히스토그램을 생성한다. (동일한 높이를 갖는 히스토그램을 생성하는 NTILE함수를 비교) 이론적으로 각 버킷이 실수 라인의 closed-open 간격이다. 예를 들어, 10은 포함하고 20은 배제되는것을 나타내기 위해서 버킷은 10.00과 19.99... 사이의 스코어를 할당할수 있다. 이것은 종종 [10,20)으로 나타낸다.

주어진 표현에 대해서, WIDTH_BUCKET은 이 식의 값이 평가된 후에 해당하는 버킷 수를 반환한다.

오라클 데이터 베이스는 필요에 따라서 0의 하위 버킷과 num_buckets+1의 상위 버킷을 생성한다. 이런 버킷은 min_value보다 적거나 max_value 값보다 큰 값을 처리해, endpoints의 타당성 체크에 유용하다.

참고

MAIN

http://www.soqool.com/servlet/board?cmd=view&cat=100&subcat=1030&seq=328

  WIDTH_BUCKET 함수가 만드는 각각의 범위구간(bucket이라고 한다)은 실수영역에서 반개구간(closed-open interval, half-open interval)을 형성한다.
  예를 들어, 하나의 범위구간이 10에서 20사이라고 하면, 실제로는 [10, 20)와 같은 범위 즉 10보다 크거나 같고 20보다 작은(x>=10 and x<20) 범위를 만드는 것이다.

  첫번째 파라미터인 expr은 히스토그램이 만들어질 표현식이며, 이 값이 NULL일 경우 결과값도 NULL이 된다.

  두번째,세번째 파라미터 min_value, max_value는 expr을 구간으로 나눌때 최소값, 최대값을 의미하며, NULL값이 올 수 없다.

  네번째 파라미터 num_buckets는 만들 구간(bucket)의 수를 의미하며, 양수이어야 한다.

  만약 해당 항목의 값이 min_value 보다 작으면 0을 반환하고, max_value보다 크거나 같으면(같을때도 포함된다. 반개구간이므로) num_buckets+1값을 반환한다.

예제

MAIN

다음 예제는 샘플 테이블 oe.customers에서 스위스에서 고객의 credit_limit열에서 10 버킷의 히스토그램을 생성하고, 각 고객에 대한 버킷 수("Credit Group")를 반환한다. 최대치 값보다 큰 신용 한도액을 가지는 고객은 상위 버킷 11에 할당된다.

SELECT customer_id, cust_last_name, credit_limit, 
       WIDTH_BUCKET(credit_limit, 100, 5000, 10) "Credit Group"
FROM customers WHERE nls_territory = 'SWITZERLAND'
ORDER BY "Credit Group";

CUSTOMER_ID CUST_LAST_NAME       CREDIT_LIMIT Credit Group
----------- -------------------- ------------ ------------
        825 Dreyfuss                      500            1
        826 Barkin                        500            1
        853 Palin                         400            1
        827 Siegel                        500            1
        843 Oates                         700            2
        844 Julius                        700            2
        835 Eastwood                     1200            3
        840 Elliott                      1400            3
        842 Stern                        1400            3
        841 Boyer                        1400            3
        837 Stanton                      1200            3
        836 Berenger                     1200            3
        848 Olmos                        1800            4
        849 Kaurusmdki                   1800            4
        828 Minnelli                     2300            5
        829 Hunter                       2300            5
        852 Tanner                       2300            5
        851 Brown                        2300            5
        850 Finney                       2300            5
        830 Dutt                         3500            7
        831 Bel Geddes                   3500            7
        832 Spacek                       3500            7
        838 Nicholson                    3500            7
        839 Johnson                      3500            7
        833 Moranis                      3500            7
        834 Idle                         3500            7
        845 Fawcett                      5000           11
        846 Brando                       5000           11
        847 Streep                       5000           11