APPROX_COUNT_DISTINCT_DETAIL
구문
APPROX_COUNT_DISTINCT_DETAIL(expr)
목적
APPROX_COUNT_DISTINCT_DETAIL 함수는 expr의 고유한 값이 포함된 행 수에 대한 근사치 정보를 계산하고 해당 정보를 특수 형식으로 담은 BLOB 값을 반환합니다.
expr에는 BFILE, BLOB, CLOB, LONG, LONG RAW 또는 NCLOB 이외의 모든 스칼라 데이터 유형의 열을 지정할 수 있습니다. 이 함수는 expr의 값이 null인 행을 무시합니다.
이 함수는 주로 SELECT 문의 GROUP BY 절과 함께 사용됩니다. 이렇게 사용할 때, 그룹 내에서 expr에 대한 근사치 고유값 개수 정보를 계산하고 각 그룹에 대해 하나의 세부 정보를 반환합니다.
APPROX_COUNT_DISTINCT_DETAIL로 반환된 세부 정보는 APPROX_COUNT_DISTINCT_AGG 함수의 입력으로 사용할 수 있으며, 이를 통해 세부 정보를 집계할 수 있습니다. 또한 TO_APPROX_COUNT_DISTINCT 함수를 사용하여 세부 정보를 사람이 읽을 수 있는 숫자 형태의 고유 개수 값으로 변환할 수 있습니다. 이 세 함수를 함께 사용하여 자원 집약적인 근사 카운트 계산을 한 번만 수행하고, 결과 세부 정보를 저장한 다음 효율적인 집계 및 조회를 수행할 수 있습니다. 예를 들어:
- APPROX_COUNT_DISTINCT_DETAIL 함수를 사용하여 근사치 고유 값 개수 정보를 계산하고 해당 결과 세부 정보를 테이블이나 머티리얼라이즈드 뷰에 저장합니다. 이는 도시 인구 통계 또는 일일 판매 통계와 같이 고도로 세분화된 세부 정보일 수 있습니다.
- APPROX_COUNT_DISTINCT_AGG 함수를 사용하여 이전 단계에서 얻은 세부 정보를 집계하고 해당 결과 세부 정보를 테이블이나 머티리얼라이즈드 뷰에 저장합니다. 이는 주별 인구 통계 또는 월간 판매 통계와 같이 낮은 세분화의 세부 정보일 수 있습니다.
- TO_APPROX_COUNT_DISTINCT 함수를 사용하여 저장된 세부 정보 값을 사람이 읽을 수 있는 숫자 값으로 변환합니다. TO_APPROX_COUNT_DISTINCT 함수를 사용하여 APPROX_COUNT_DISTINCT_DETAIL 함수 또는 APPROX_COUNT_DISTINCT_AGG 함수로 생성된 세부 정보 값을 쿼리하는 데 사용할 수 있습니다.
참고:
예제
이 섹션의 예제들은 APPROX_COUNT_DISTINCT_DETAIL, APPROX_COUNT_DISTINCT_AGG, TO_APPROX_COUNT_DISTINCT 함수를 함께 사용하여 자원 집약적인 근사 카운트 계산을 한 번만 수행하고, 결과 세부 정보를 저장한 다음 효율적인 집계 및 조회를 수행하는 방법을 보여줍니다.
APPROX_COUNT_DISTINCT_DETAIL: 예제
다음 문장은 sh.times와 sh.sales 테이블을 조회하여 매일 판매된 고유 제품의 근사치 개수를 가져옵니다. APPROX_COUNT_DISTINCT_DETAIL 함수는 매일 제품이 판매된 날짜마다 detail인 daily_detail을 반환합니다. 반환된 세부 정보는 daily_prod_count_mv라는 머티리얼라이즈드 뷰에 저장됩니다.
CREATE MATERIALIZED VIEW daily_prod_count_mv AS
SELECT t.calendar_year year,
t.calendar_month_number month,
t.day_number_in_month day,
APPROX_COUNT_DISTINCT_DETAIL(s.prod_id) daily_detail
FROM times t, sales s
WHERE t.time_id = s.time_id
GROUP BY t.calendar_year, t.calendar_month_number, t.day_number_in_month;
APPROX_COUNT_DISTINCT_AGG: 예제
다음 문장은 APPROX_COUNT_DISTINCT_AGG 함수를 사용하여 daily_prod_count_mv에 저장된 매일 세부 정보를 읽고, 근사치로 매월 판매된 고유 제품의 개수를 담고 있는 집계된 세부 정보를 생성합니다. 이러한 집계된 세부 정보는 monthly_prod_count_mv라는 머티리얼라이즈드 뷰에 저장됩니다.
CREATE MATERIALIZED VIEW monthly_prod_count_mv AS
SELECT year,
month,
APPROX_COUNT_DISTINCT_AGG(daily_detail) monthly_detail
FROM daily_prod_count_mv
GROUP BY year, month;
다음 문장은 이전 문장과 유사하지만, 근사치로 매년 판매된 고유 제품의 개수를 담고 있는 집계된 세부 정보를 생성합니다. 이러한 집계된 세부 정보는 annual_prod_count_mv라는 머티리얼라이즈드 뷰에 저장됩니다.
CREATE MATERIALIZED VIEW annual_prod_count_mv AS
SELECT year,
APPROX_COUNT_DISTINCT_AGG(daily_detail) annual_detail
FROM daily_prod_count_mv
GROUP BY year;
TO_APPROX_COUNT_DISTINCT: 예제
다음 문장은 TO_APPROX_COUNT_DISTINCT 함수를 사용하여 daily_prod_count_mv에 저장된 매일 세부 정보를 조회하고, 근사치로 판매된 고유 제품의 수를 각 날짜별로 반환합니다.
SELECT year,
month,
day,
TO_APPROX_COUNT_DISTINCT(daily_detail) "NUM PRODUCTS"
FROM daily_prod_count_mv
ORDER BY year, month, day;
YEAR MONTH DAY NUM PRODUCTS
---------- ---------- ---------- ------------
1998 1 1 24
1998 1 2 25
1998 1 3 11
1998 1 4 34
1998 1 5 10
1998 1 6 8
1998 1 7 37
1998 1 8 26
1998 1 9 25
1998 1 10 38
. . .
다음 문장은 TO_APPROX_COUNT_DISTINCT 함수를 사용하여 monthly_prod_count_mv에 저장된 월별 세부 정보를 조회하고, 근사치로 판매된 고유 제품의 수를 각 달별로 반환합니다.
SELECT year,
month,
TO_APPROX_COUNT_DISTINCT(monthly_detail) "NUM PRODUCTS"
FROM monthly_prod_count_mv
ORDER BY year, month;
YEAR MONTH NUM PRODUCTS
---------- ---------- ------------
1998 1 57
1998 2 56
1998 3 55
1998 4 49
1998 5 49
1998 6 48
1998 7 54
1998 8 56
1998 9 55
1998 10 57
. . .
다음 문장은 TO_APPROX_COUNT_DISTINCT 함수를 사용하여 annual_prod_count_mv에 저장된 연간 세부 정보를 조회하고, 근사치로 판매된 고유 제품의 수를 각 연도별로 반환합니다.
SELECT year,
TO_APPROX_COUNT_DISTINCT(annual_detail) "NUM PRODUCTS"
FROM annual_prod_count_mv
ORDER BY year;
YEAR NUM PRODUCTS
---------- ------------
1998 60
1999 72
2000 72
2001 71
출처: 오라클 레퍼런스
원문 링크: Oracle APPROX_COUNT_DISTINCT_DETAIL 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] APPROX_PERCENTILE - 근사 백분위수 계산 (0) | 2023.07.30 |
---|---|
[오라클 레퍼런스 함수] APPROX_MEDIAN - 대략적인 중앙값 계산 (0) | 2023.07.30 |
[오라클 레퍼런스 함수] APPROX_COUNT_DISTINCT_AGG - 근사 중복 행 수 집계 (0) | 2023.07.29 |
[오라클 레퍼런스 함수] APPROX_COUNT_DISTINCT - 고유한 개수의 근사치를 반환 (0) | 2023.07.29 |
[오라클 레퍼런스 함수] APPROX_COUNT - 근사 개수 반환 (0) | 2023.07.29 |
댓글