포스팅 목차
[오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크]
o WIDTH_BUCKET
문 법
width_bucket::=
목 적
WIDTH_BUCKET함수는 동일한 넓이를 갖는 히스토그램을 생성한다.
(동일한 높이를 갖는 히스토그램을 생성하는 NTILE함수를 비교) 이론적으로 각 버킷이 실수 라인의 closed-open 간격이다. 예를 들어, 10은 포함하고 20은 배제되는 것을 나타내기 위해서 버킷은 10.00과 19.99... 사이의 스코어를 할당할 수 있다. 이것은 종종 [10,20)으로 나타낸다.
주어진 표현에 대해서, WIDTH_BUCKET은 이 식의 값이 평가된 후에 해당하는 버킷 수를 반환한다.
- expr은 히스트그램이 생성되는 표현이다. 이 식은 수치, Datetime값 또는 암묵적으로 수치 또는 Datetime값으로 변환 가능한 값을 평가할 수 있다. 만약 expr이 Null로 평가되면, 식은 Null을 반환한다.
- min_value과 max_value은 expr에 대하여 허용 가능한 범위의 끝점을 결정하는 표현이다. 이 표현의 양쪽 모두는 수치 또는 Datetime으로 평가될 필요가 있어서, 모두 Null로 평가되지는 않는다.
- num_buckets은 버킷의 수를 예측하는 상수를 결정하는 표현이다. 이 표현은 양의 정수로 평가될 필요가 있다.
오라클 데이터 베이스는 필요에 따라서 0의 하위 버킷과 num_buckets+1의 상위 버킷을 생성한다. 이런 버킷은 min_value보다 적거나 max_value 값보다 큰 값을 처리해, endpoints의 타당성 체크에 유용하다.
참 고
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 값을 반환한다.
관련 함수
함수명 | 함수 내용 |
CUME_DIST |
그룹에 존재하는 관측치의 누적 분포 값을 계산한다. |
DENSE_RANK | Rank()와 유사한 함수로 각 그룹별로 ORDER BY절에 사용된 칼럼이나 표현식을 기준으로 정렬하고, 그룹 내의 각 열에 대한 순위를 부여한다. |
LAG | 이 함수는 Self 조인 작업 수행하지 않고, 하나의 테이블을 접근하면서 여러 개의 행에 동시에 접근(Access)하여 작업한다. LAG 함수는 현재 위치를 기준으로 이전에 지정한 행에 접근하여 작업을 수행한다. |
LEAD | 이 함수는 Self 조인 작업을 수행하지 않고, 하나의 테이블을 접근하면서 여러 개의 행에 동시에 접근(Access)하여 작업한다. 쿼리에서 수행되는 행의 Series나 커서의 위치를 지정하면, LEAD 함수는 해당 위치 이후에 존재하는 물리적 Offset의 행에 ACCESS 한다. |
NTILE | 그룹 내에서 정렬된 데이터를 expr에 의해 지정된 bucket의 수로 분할하여, 각 행을 적절한 bucket의 번호를 부여하여 할당한다. |
PERCENT_RANK |
인수로 지정한 값의 그룹 내의 위치를 나타내는 백분위 순위(순위 퍼센트, Percent rank)를 반환한다. |
RANK | 값의 그룹에서 값의 순위를 계산한다. 반환되는 데이터형은 NUMBER이다. |
RATIO_TO_REPORT | 개별 그룹에서 관측치 합에 대한 개별 관측치 값의 상대적 비율(구성비, 점유율, Share)을 계산한다. |
ROW_NUMBER | 이 함수는 파티션 그룹별 또는 전체 데이터에 대하여 order_by_clause에서 지정된 행의 정렬 순위대로 1로 시작하는 중복을 허용하지 않는 유일한(unique) 순서 값을 할당한다. (파티션에서 각 행 또는 쿼리에 의해서 반환되는 각 행에 대하여) |
WIDTH_BUCKET | 동일한 넓이를 갖는 히스토그램을 생성한다. |
예 제
다음 예제는 샘플 테이블 oe.customers에서 스위스에서 고객의 credit_limit열에서 10 버킷의 히스토그램을 생성하고, 각 고객에 대한 버킷 수("Credit Group")를 반환한다. 최대치 값보다 큰 신용 한도액을 가지는 고객은 상위 버킷 11에 할당된다.
Oracle Program |
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";
Results |
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
--------------------------------------------
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
【오라클(Oracle) SQL 함수】 XMLCOLATTVAL 함수 (0) | 2021.10.24 |
---|---|
【오라클(Oracle) SQL 함수】 XMLAGG 함수 (0) | 2021.10.24 |
[오라클 SQL 함수] VSIZE 함수 (0) | 2021.10.24 |
【오라클(Oracle) SQL 함수】 VARIANCE 함수 (0) | 2021.10.24 |
【오라클(Oracle) SQL 함수】 VAR_SAMP 함수 (0) | 2021.10.24 |
댓글