Oracle에서 KEEP이 있거나 없는 PARTITION BY
Oracle의 PARTITION BY 절을 사용하면 사용자가 지정된 열을 기반으로 테이블의 행을 그룹화할 수 있습니다. 집계 계산용. 경우에 따라 KEEP 절을 PARTITION BY와 함께 사용하여 각 파티션 내의 개별 행 보존을 제어할 수 있습니다.
KEEP 구문:
MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno)
이 구문에서는 KEEP 절 뒤에 DENSE_RANK FIRST가 옵니다. 이는 급여가 가장 낮은 행이 각 절 내에 유지되어야 함을 나타냅니다. 파티션. DENSE_RANK는 연속 순위를 보장합니다. 즉, 급여가 동일한 행이 동일한 순위를 갖게 됩니다.
KEEP이 없는 구문:
MIN(sal) OVER (PARTITION BY deptno)
이 구문에서는 KEEP 절이 생략됩니다. . KEEP이 없으면 각 파티션 내의 모든 행이 집계 계산에 고려되므로 동일한 값을 가진 여러 행이 결과에 포함될 수 있습니다.
차이점:
두 쿼리의 주요 차이점은 다음과 같습니다.
중복 유지:
제공된 항목에서 예를 들어, MIN 함수가 동일한 열(sal)에도 적용되므로 KEEP 절은 중복됩니다. 결과적으로 급여를 기준으로 첫 번째 순위 행은 항상 급여가 가장 낮은 행이 됩니다.
다른 순서 열의 예:
그러나 다른 경우 ordering 열은 KEEP 절에 사용되며 다른 효과를 가질 수 있습니다.
MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY name) OVER (PARTITION BY deptno)
이 경우 다음이 포함된 행 동일한 순서(이름)를 가진 사람들 중 가장 낮은 급여가 각 파티션 내에 유지됩니다. 이를 통해 사용자는 각 부서 내에서 특정 이름을 가진 직원의 최저 급여를 선택할 수 있습니다.
위 내용은 'KEEP' 절은 Oracle의 'PARTITION BY' 집계 함수에 어떤 영향을 미치나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!