포스팅 목차
o ORA_HASH
문법
ora_hash::=
목적
ORA_HASH함수는 주어진 표현에 대한 해쉬 값을 계산하는 함수이다.
이 함수는 데이터의 부분 집합 분석이나, 랜덤 샘플 생성과 같은 조작에 유용하다.
- 인수 expr은 오라클 데이터 베이스로 해쉬 값을 계산하기 원하는 데이터를 정의한다. 일반적 열의 이름을 가지는 expr로 지정하기 위한 데이터의 형태나 길이의 제한은 없다.
- 옵션의 max_bucket 인수는 해쉬 함수에 의해 반환되는 최대의 bucket값을 정의한다. 0과 4294967295 사이의 값을 지정할 수 있다. 기본값은 4294967295이다.
- 옵션 seed_value인수는 데이터의 같은 세트에 대하여 여러 다른 결과를 산출하도록 한다. 오라클은 해쉬 함수를 expr과 seed_value의 조합에 적용한다. 0과 4294967295 사이의 값을 지정할 수 있다. 기본값은 4294967295이다.
함수는 NUMBER값을 반환한다.
예제
다음 예제는 sh.sales 테이블에서 고객 ID와 제품 ID의 각 조합에 대한 해쉬값을 생성하여, 해쉬값을 최대 100개 bucket에 분할하고, 첫 번째 bucket(bucket 0)에 amount_sold값의 합계를 반환한다. 세 번째 인수 (5)는 해쉬 함수에 대한 seed값을 지정한다. 이 seed값을 변화함에 따라 같은 쿼리에 대하여 다른 해쉬 결과를 획득할 수 있다..
Oracle Program |
SELECT SUM(amount_sold)
FROM sales
WHERE ORA_HASH(CONCAT(cust_id, prod_id), 99, 5) = 0;
Results |
SUM(AMOUNT_SOLD)
----------------
7315
다음 예제는 10개의 buckets(0에서 9) 지정에 의해 sh.sales 테이블에서 데이터의 subset을 검색하여서, bucket 1로부터 데이터를 반환한다. 기대되는 subset은 행의 약 10%이다. (sales 테이블은 960 행).
Oracle Program |
SELECT *
FROM sales
WHERE ORA_HASH(cust_id, 9) = 1;
Results |
PROD_ID CUST_ID TIME_ID C PROMO_ID QUANTITY_SOLD AMOUNT_SOLD
---------- ---------- --------- - ---------- ------------- -----------
2510 6950 01-FEB-98 S 9999 2 78
9845 9700 04-FEB-98 C 9999 17 561
3445 33530 07-FEB-98 T 9999 2 170
. . .
740 22200 13-NOV-00 S 9999 4 156
9425 4750 29-NOV-00 I 9999 11 979
1675 46750 29-NOV-00 S 9999 19 1121
97 rows selected.
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
반응형
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
[오라클(Oracle) SQL 함수] PERCENT_RANK 함수 (0) | 2021.10.19 |
---|---|
【오라클(Oracle) SQL 함수】 PATH 함수 (0) | 2021.10.19 |
【오라클(Oracle) SQL 함수】 NVL2 함수 (0) | 2021.10.19 |
【오라클(Oracle) SQL 함수】 NVL 함수 (0) | 2021.10.19 |
【오라클(Oracle) SQL 함수】 ASIN 함수 (0) | 2021.10.18 |
댓글