분석 함수는 행 그룹을 기반으로 집계 값을 계산합니다. 그들은 각 그룹에 대해 여러 행을 반환한다는 점에서 집계 함수와 다릅니다. 행의 그룹은 창이라고하며analytic_clause
에 의해 정의됩니다. 각 행에 대해 행의 슬라이딩 창이 정의됩니다. 창은 현재 행에 대한 계산을 수행하는 데 사용되는 행의 범위를 결정합니다. 창 크기는 실제 행 수 또는 시간과 같은 논리적 간격을 기반으로 할 수 있습니다.
적인 분석 기능은 마지막 수행된 작업에서 쿼리를 제외한 최종ORDER
BY
clause. 모든 조 및 모든WHERE
GROUP
BY
,andHAVING
ORDER
BY
clause.
분석 함수는 일반적으로 누적,이동,중심 및보고 집계를 계산하는 데 사용됩니다.
analytic_function::=
그림”analytic_function 에 대한 설명을 따릅니다.gif”
analytic_clause::=
그림”analytic_clause 에 대한 설명을 따릅니다.gif”
query_partition_clause::=
그림”query_partition_clause 에 대한 설명을 따릅니다.gif”
order_by_clause::=
설명을 따릅니다.gif”
windowing_clause::=
그림”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 OVER
analytic_clause
to indicate that the function operates on a query result set. This clause is computed after the FROM
WHERE
GROUP
BY
, and HAVING
clauses. 지정할 수 있는 분석 기능으로 이 절에서 선택 목록 또는ORDER
BY
clause. 필터 쿼리의 결과를 분석에 기초한 함수,둥지를 이러한 기능을 내 부모 쿼리,그리고 그 결과 필터링의 중첩된 하위.
노트 analytic_clause:다음 사항을 참고하십시오analytic_clause
-
할 수 없습니다 둥지를 분석적 함수에 의해 지정하는 분석 기능의 어떤 부분에서
analytic_clause
. 그러나 하위 쿼리에서 분석 함수를 지정하고 그 위에 다른 분석 함수를 계산할 수 있습니다. -
지정할 수 있습니다
OVER
analytic_clause
사용자 정의 분석 기능뿐만 아니라 내장 분석 기능입니다. 함수 만들기를 참조하십시오.
query_partition_clause
사용하는PARTITION
BY
value_expr
. 이 절을 생략하면 함수는 쿼리 결과 집합의 모든 행을 단일 그룹으로 처리합니다.
분석 함수에서query_partition_clause
model_column_clauses
outer_join_clause
)사용하여 낮은 지점의 구문(괄호).
지정할 수 있습니다 여러 분석적 함수에서 동일한 쿼리를 각각 동일하거나 다른PARTITION
BY
키를 사용합니다.
쿼리중인 객체에 병렬 특성이 있고query_partition_clause
로 분석 함수를 지정하면 함수 계산도 병렬화됩니다.
유효한 값의value_expr
은 상수,열 nonanalytic 기능,기능 식와 관련된 어떠한다.
order_by_clause
사용하는order_by_clause
value_expr
그리고 각각의 자격을 갖춘 의문 시퀀스입니다.
각 함수 내에서 여러 순서 표현식을 지정할 수 있습니다. 이렇게 하는 것은 특히 유용한 사용할 경우 기능을 평가하는 값이기 때문에,두 번째는 표현을 해결할 수 있 사이의 관계에 대해 동일한 값을 가 첫 번째 표현이다.
마order_by_clause
결과에 대해 동일한 값을 가는 여러 행에 기능은 다음과 같이 동작합니다:
-
CUME_DIST
DENSE_RANK
NTILE
PERCENT_RANK
,andRANK
반환과 같은 결과를 위해 각각의 행이 있습니다. -
ROW_NUMBER
order_by_clause
ORDER
BY
을 보증하지 않습 총을 주문합니다. -
다른 모든 분석 함수의 경우 결과는 창 사양에 따라 다릅니다.
RANGE
ROWS
키워드로 실제 창을 지정하면 결과는 비 결정적입니다.
ORDER BY 절에 대한 제한ORDER
BY
절에 다음 제한 사항이 적용됩니다:
-
분석 함수에 사용될 때
order_by_clause
expr
SIBLINGS
position
c_alias
order_by_clause
같은 사용하기 위해 전체 쿼리 또는 하위. -
An analytic function that uses the
RANGE
keyword can use multiple sort keys in itsORDER
BY
clause if it specifies any of the following windows:-
RANGE
BETWEEN
UNBOUNDED
PRECEDING
AND
CURRENT
ROW
. The short form of this isRANGE
UNBOUNDED
PRECEDING
. -
RANGE
BETWEEN
CURRENT
ROW
AND
UNBOUNDED
FOLLOWING
-
RANGE
BETWEEN
CURRENT
ROW
AND
CURRENT
ROW
-
RANGE
BETWEEN
UNBOUNDED
PRECEDING
AND
UNBOUNDED
FOLLOWING
창의 경계를 다른 이들보다 네 하나만 있을 수 있습니다 정렬 키
ORDER
BY
ROW
키워드로 지정된 창 경계에는 적용되지 않습니다. -
ASC|DESC 순서 지정 순서(오름차순 또는 내림차순). ASC
가 기본값입니다.
NULLS FIRST|NULLS LAST nulls 가 포함 된 반환 된 행이 순서 순서에서 첫 번째 또는 마지막으로 표시되어야하는지 여부를 지정합니다.
NULLS
LAST
NULLS
FIRST
본에 대한 내림차순으로.
분석 함수는 항상 함수의order_by_clause
order_by_clause
order_by_clause
를 사용하여 최종 결과 순서를 보장합니다.
see
order_by_clause 의 선택에 대한 자세한 내용은 이 절
windowing_clause
몇 가지 분석 기능을 사용하는windowing_clause
windowing_clause
를 허용하는 함수 뒤에 별표(*)가 있습니다.
ROWS|RANGE 이 키워드는 각 행에 대해 함수 결과 계산에 사용되는 창(실제 또는 논리적 행 세트)을 정의합니다. 그런 다음 함수는 창의 모든 행에 적용됩니다. 창은 쿼리 결과 집합 또는 파티션을 통해 위에서 아래로 이동합니다.
-
ROWS
물리적 단위(행)로 창을 지정합니다. -
RANGE
창을 논리 오프셋으로 지정합니다.
order_by_clause
RANGE
order_by_clause
. “조항 별 주문 제한”을 참조하십시오.
논리적 오프셋이있는 분석 함수에 의해 반환 된 값은 항상 결정적입니다. 그러나,가치에 의해 반환되는 분석 기능으로 물리적 오프셋을 생산할 수 있습는 비결정적 결과하지 않는 한 순서 식의 결과로 독특한 주문. 이 고유 순서를 달성하기 위해order_by_clause
에 여러 열을 지정해야 할 수 있습니다.
사이… 그리고BETWEEN
AND
AND
AND
)을 정의합니다.
BETWEEN
를 생략하고 하나의 끝점 만 지정하면 Oracle 은 시작점으로 간주하고 끝점은 현재 행의 기본값으로 간주됩니다.
무제한 위의 지정할UNBOUNDED
PRECEDING
음을 나타내는 창작의 첫 번째 행에서 파티션입니다. 이것은 시작점 사양이며 끝점 사양으로 사용할 수 없습니다.
무제한 다음과 같은 지정한UNBOUNDED
FOLLOWING
음을 나타내는 창의 끝에서의 마지막 행 파티션입니다. 이것은 끝점 사양이며 시작점 사양으로 사용할 수 없습니다.
현재의 행으로 시작점,CURRENT
ROW
ROW
RANGE
value_expr
PRECEDING
일 수 없습니다.
를 끝점,CURRENT
ROW
ROW
RANGE
value_expr
FOLLOWING
.
value_expr 이전나 value_expr 다음에 대한RANGE
ROW
:
-
경우
value_expr
FOLLOWING
value_expr
FOLLOWING
. -
경우
value_expr
PRECEDING
value_expr
PRECEDING
.
정의하는 경우 논리적 창에 의해 정의된 시간 간격에 숫자 형식으로,다음을 사용해야 할 수 있습니다 변환 기능이 있다.
참조:
NUMTOYMINTERVAL 및 NUMTODSINTERVAL 변환하는 방법에 대한 자세한 내용은 숫자로 시간 간격으로
경우 지정한ROWS
-
value_expr
는 육체적인 오프셋이 있습니다. 상수 또는 표현식이어야하며 양수 숫자 값으로 평가해야합니다. -
value_expr
가 시작 지점의 일부인 경우 종료 지점 이전의 행으로 평가해야합니다.
경우 지정한RANGE
-
value_expr
논리적인 오프셋이 있습니다. 양수 숫자 값 또는 간격 리터럴로 평가되는 상수 또는 표현식이어야 합니다. 간격 리터럴에 대한 정보는”리터럴”을 참조하십시오. -
order_by_clause
에서 하나의 표현식 만 지정할 수 있습니다. -
경우
value_expr
ORDER
BY
expr
DATE
데이터를 입력합니다. -
If
value_expr
evaluates to an interval value, then theORDER
BY
expr
must be aDATE
data type.
If you omit the windowing_clause
entirely, then the default is RANGE
BETWEEN
UNBOUNDED
PRECEDING
AND
CURRENT
ROW
.
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 데이터베이스의 데이터 웨어하우징 가이드에 대한 자세한 정보는 이러한 기능과 시나리오에 대한 설명들의 사용