분석 함수

분석 함수는 행 그룹을 기반으로 집계 값을 계산합니다. 그들은 각 그룹에 대해 여러 행을 반환한다는 점에서 집계 함수와 다릅니다. 행의 그룹은 창이라고하며analytic_clause에 의해 정의됩니다. 각 행에 대해 행의 슬라이딩 창이 정의됩니다. 창은 현재 행에 대한 계산을 수행하는 데 사용되는 행의 범위를 결정합니다. 창 크기는 실제 행 수 또는 시간과 같은 논리적 간격을 기반으로 할 수 있습니다.

적인 분석 기능은 마지막 수행된 작업에서 쿼리를 제외한 최종ORDERBYclause. 모든 조 및 모든WHEREGROUPBY,andHAVINGORDERBYclause.

분석 함수는 일반적으로 누적,이동,중심 및보고 집계를 계산하는 데 사용됩니다.

analytic_function::=

analytic_function 에 대한 설명.gif 는

그림”analytic_function 에 대한 설명을 따릅니다.gif”

analytic_clause::=

analytic_clause 에 대한 설명.gif 는

그림”analytic_clause 에 대한 설명을 따릅니다.gif”

query_partition_clause::=

query_partition_clause 에 대한 설명.gif 는
그림”query_partition_clause 에 대한 설명을 따릅니다.gif”

order_by_clause::=

Order_by_clause 에 대한 설명.gif 는 그림

설명을 따릅니다.gif”

windowing_clause::=

Windowing_clause 에 대한 설명.gif 는

그림”windowing_clause 에 대한 설명을 따릅니다.gif”

이 구문의 의미론은 다음 섹션에서 설명합니다.

analytic_function

의 이름을 지정합 분석 기능(의 분석 기능은 다음과 같은 이 논의의 의미).

인수

분석 함수는 0~3 개의 인수를 취합니다. 인수될 수 있는 어떠한 숫자 또는 숫자가 아닌 모든 데이터 형식으로 변환될 수 있습니다 숫자 데이터를 입력합니다. 오라클은 숫자 우선 순위가 가장 높은 인수를 결정하고 나머지 인수를 암시 적으로 해당 데이터 유형으로 변환합니다. 반환 유형은 개별 함수에 대해 달리 명시되지 않는 한 해당 데이터 유형이기도합니다.

참조:

“Numeric Precedence” for information on numeric precedence and Table 3-10, “Implicit Type Conversion Matrix” for more information on implicit conversion

analytic_clause

Use OVERanalytic_clause to indicate that the function operates on a query result set. This clause is computed after the FROMWHEREGROUPBY, and HAVING clauses. 지정할 수 있는 분석 기능으로 이 절에서 선택 목록 또는ORDERBYclause. 필터 쿼리의 결과를 분석에 기초한 함수,둥지를 이러한 기능을 내 부모 쿼리,그리고 그 결과 필터링의 중첩된 하위.

노트 analytic_clause:다음 사항을 참고하십시오analytic_clause

  • 할 수 없습니다 둥지를 분석적 함수에 의해 지정하는 분석 기능의 어떤 부분에서analytic_clause. 그러나 하위 쿼리에서 분석 함수를 지정하고 그 위에 다른 분석 함수를 계산할 수 있습니다.

  • 지정할 수 있습니다OVERanalytic_clause사용자 정의 분석 기능뿐만 아니라 내장 분석 기능입니다. 함수 만들기를 참조하십시오.

query_partition_clause

사용하는PARTITIONBYvalue_expr. 이 절을 생략하면 함수는 쿼리 결과 집합의 모든 행을 단일 그룹으로 처리합니다.

분석 함수에서query_partition_clausemodel_column_clausesouter_join_clause)사용하여 낮은 지점의 구문(괄호).

지정할 수 있습니다 여러 분석적 함수에서 동일한 쿼리를 각각 동일하거나 다른PARTITIONBY키를 사용합니다.

쿼리중인 객체에 병렬 특성이 있고query_partition_clause로 분석 함수를 지정하면 함수 계산도 병렬화됩니다.

유효한 값의value_expr은 상수,열 nonanalytic 기능,기능 식와 관련된 어떠한다.

order_by_clause

사용하는order_by_clausevalue_expr그리고 각각의 자격을 갖춘 의문 시퀀스입니다.

각 함수 내에서 여러 순서 표현식을 지정할 수 있습니다. 이렇게 하는 것은 특히 유용한 사용할 경우 기능을 평가하는 값이기 때문에,두 번째는 표현을 해결할 수 있 사이의 관계에 대해 동일한 값을 가 첫 번째 표현이다.

order_by_clause결과에 대해 동일한 값을 가는 여러 행에 기능은 다음과 같이 동작합니다:

  • CUME_DISTDENSE_RANKNTILEPERCENT_RANK,andRANK반환과 같은 결과를 위해 각각의 행이 있습니다.

  • ROW_NUMBERorder_by_clauseORDERBY을 보증하지 않습 총을 주문합니다.

  • 다른 모든 분석 함수의 경우 결과는 창 사양에 따라 다릅니다. RANGEROWS키워드로 실제 창을 지정하면 결과는 비 결정적입니다.

ORDER BY 절에 대한 제한ORDERBY절에 다음 제한 사항이 적용됩니다:

  • 분석 함수에 사용될 때order_by_clauseexprSIBLINGSpositionc_aliasorder_by_clause같은 사용하기 위해 전체 쿼리 또는 하위.

  • An analytic function that uses the RANGE keyword can use multiple sort keys in its ORDERBY clause if it specifies any of the following windows:

    • RANGEBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW. The short form of this is RANGEUNBOUNDEDPRECEDING.

    • RANGEBETWEENCURRENTROWANDUNBOUNDEDFOLLOWING

    • RANGEBETWEENCURRENTROWANDCURRENTROW

    • RANGEBETWEENUNBOUNDEDPRECEDINGANDUNBOUNDEDFOLLOWING

    창의 경계를 다른 이들보다 네 하나만 있을 수 있습니다 정렬 키ORDERBYROW키워드로 지정된 창 경계에는 적용되지 않습니다.

ASC|DESC 순서 지정 순서(오름차순 또는 내림차순). ASC가 기본값입니다.

NULLS FIRST|NULLS LAST nulls 가 포함 된 반환 된 행이 순서 순서에서 첫 번째 또는 마지막으로 표시되어야하는지 여부를 지정합니다.

NULLSLASTNULLSFIRST본에 대한 내림차순으로.

분석 함수는 항상 함수의order_by_clauseorder_by_clauseorder_by_clause를 사용하여 최종 결과 순서를 보장합니다.

see

order_by_clause 의 선택에 대한 자세한 내용은 이 절

windowing_clause

몇 가지 분석 기능을 사용하는windowing_clausewindowing_clause를 허용하는 함수 뒤에 별표(*)가 있습니다.

ROWS|RANGE 이 키워드는 각 행에 대해 함수 결과 계산에 사용되는 창(실제 또는 논리적 행 세트)을 정의합니다. 그런 다음 함수는 창의 모든 행에 적용됩니다. 창은 쿼리 결과 집합 또는 파티션을 통해 위에서 아래로 이동합니다.

  • ROWS물리적 단위(행)로 창을 지정합니다.

  • RANGE창을 논리 오프셋으로 지정합니다.

order_by_clauseRANGEorder_by_clause. “조항 별 주문 제한”을 참조하십시오.

논리적 오프셋이있는 분석 함수에 의해 반환 된 값은 항상 결정적입니다. 그러나,가치에 의해 반환되는 분석 기능으로 물리적 오프셋을 생산할 수 있습는 비결정적 결과하지 않는 한 순서 식의 결과로 독특한 주문. 이 고유 순서를 달성하기 위해order_by_clause에 여러 열을 지정해야 할 수 있습니다.

사이… 그리고BETWEENANDANDAND)을 정의합니다.

BETWEEN를 생략하고 하나의 끝점 만 지정하면 Oracle 은 시작점으로 간주하고 끝점은 현재 행의 기본값으로 간주됩니다.

무제한 위의 지정할UNBOUNDEDPRECEDING음을 나타내는 창작의 첫 번째 행에서 파티션입니다. 이것은 시작점 사양이며 끝점 사양으로 사용할 수 없습니다.

무제한 다음과 같은 지정한UNBOUNDEDFOLLOWING음을 나타내는 창의 끝에서의 마지막 행 파티션입니다. 이것은 끝점 사양이며 시작점 사양으로 사용할 수 없습니다.

현재의 행으로 시작점,CURRENTROWROWRANGEvalue_exprPRECEDING일 수 없습니다.

를 끝점,CURRENTROWROWRANGEvalue_exprFOLLOWING.

value_expr 이전나 value_expr 다음에 대한RANGEROW:

  • 경우value_exprFOLLOWINGvalue_exprFOLLOWING.

  • 경우value_exprPRECEDINGvalue_exprPRECEDING.

정의하는 경우 논리적 창에 의해 정의된 시간 간격에 숫자 형식으로,다음을 사용해야 할 수 있습니다 변환 기능이 있다.

참조:

NUMTOYMINTERVAL 및 NUMTODSINTERVAL 변환하는 방법에 대한 자세한 내용은 숫자로 시간 간격으로

경우 지정한ROWS

  • value_expr는 육체적인 오프셋이 있습니다. 상수 또는 표현식이어야하며 양수 숫자 값으로 평가해야합니다.

  • value_expr가 시작 지점의 일부인 경우 종료 지점 이전의 행으로 평가해야합니다.

경우 지정한RANGE

  • value_expr논리적인 오프셋이 있습니다. 양수 숫자 값 또는 간격 리터럴로 평가되는 상수 또는 표현식이어야 합니다. 간격 리터럴에 대한 정보는”리터럴”을 참조하십시오.

  • order_by_clause에서 하나의 표현식 만 지정할 수 있습니다.

  • 경우value_exprORDERBYexprDATE데이터를 입력합니다.

  • If value_expr evaluates to an interval value, then the ORDERBYexpr must be a DATE data type.

If you omit the windowing_clause entirely, then the default is RANGEBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW.

Analytic functions are commonly used in data warehousing environments. 목록에서의 분석적 함수는 다음,기능에 의해 따라 별표(*)는 전체 구문을 포함하여windowing_clause.

AVG*
CORR*
수*
COVAR_POP*
COVAR_SAMP*
CUME_DIST
DENSE_RANK
첫 번째
FIRST_VALUE*
지연
마지막
LAST_VALUE*

LISTAGG
최*
중간
분*
NTH_VALUE*
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
순위
RATIO_TO_REPORT
REGR_(선형 회귀분석)기능*
그룹
표준편차*
STDDEV_POP*
STDDEV_SAMP*
합계*
VAR_POP*
VAR_SAMP*
분산*

see

Oracle 데이터베이스의 데이터 웨어하우징 가이드에 대한 자세한 정보는 이러한 기능과 시나리오에 대한 설명들의 사용

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다