All thing of the world!

Oracle APPROX_COUNT_DISTINCT 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle APPROX_COUNT_DISTINCT 설명 : 오라클 함수

WorldSeeker 2021. 4. 1. 09:58

* 주의 : 본 함수는 Oracle Database 12c Release 1 (12.1.0.2) 이상 사용가능함

1. 함수의 목적

    Oracle APPROX_COUNT_DISTINCT는 count(distinct expr)와 동일한 개략적인 값을 리턴한다.
     대량의 데이터를 count(distinct expr)할 때 보다 더 빠른 속도로 수행가능하며,  빠른 속도로 count(distinct expr)하기 위해 만들어진 함수다. (개략적이라고는 하나 거의 100% 맞다)

 

  *  approximate query를 위한 함수로, 읽는 범위가 넓은 대용량 데이터베이스를 정확도보다는 속도를 중요시하는 상황에 쓰이도록 개발되었다(속도 매우 빠름, 오차허용 범위내의 정확도). 예를 들어 BI/DW등 대용량 데이터베이스에서 집계 테이블을 별도로 만들지 않고, 바로 소스 테이블을 approximate query를 사용할 수 있다. 오라클 내장 함수 중 접두어로 [APPROX_]가 붙은 함수는 approximate query를 위한 함수이다. 


2. 샘플을 통한 개념 퀵뷰

    SELECT prod_id, APPROX_COUNT_DISTINCT(cust_id) AS "Number of Customers"
    FROM sales
    GROUP BY prod_id
    ORDER BY prod_id;

PROD_ID Number of Customers
---------- -------------------
13 2516
14 2030
15 2105
16 2367
17 2093
18 2975
19 2630
20 3791


3. 사용방법  


4. 함수 PARAMETER 설명

[expr]
expr의 경우 BFILE, BLOB, CLOB, LONG, LONG RAW 또는 NCLOB 이외의 스칼라 데이터 유형의 컬럼을 지정할 수 있다.
APPROX_COUNT_DISTINCT는 expr에 대한 널 값을 포함하는 행을 무시하며, NUMBER를 반환한다.

count(distinct expr)와 같이 expr에 해당되는 컬럼을 넣어준다.


5. 다양한 샘플표현

example 1)  manger_id 컬럼을 count(distinct)하라.

SELECT APPROX_COUNT_DISTINCT(manager_id) AS "Active Managers"
FROM employees;

Active Managers
---------------
18

example 2) cust_id를 prod_id별로 count(distinct) 하라.

SELECT prod_id, APPROX_COUNT_DISTINCT(cust_id) AS "Number of Customers"
FROM sales
GROUP BY prod_id
ORDER BY prod_id;

PROD_ID Number of Customers
---------- -------------------
13 2516
14 2030
15 2105
16 2367
17 2093
18 2975
19 2630
20 3791

 

 

 

Comments