> 데이터 베이스 > MySQL 튜토리얼 > 창 함수를 사용하여 Oracle SQL에서 최대 기반 값을 효율적으로 선택하려면 어떻게 해야 합니까?

창 함수를 사용하여 Oracle SQL에서 최대 기반 값을 효율적으로 선택하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2025-01-17 19:17:09
원래의
552명이 탐색했습니다.

How Can I Efficiently Select Maximum-Based Values in Oracle SQL Using Window Functions?

Oracle SQL: 창 함수를 사용하여 최대값 추출

다른 열의 최대값을 기준으로 특정 열 값을 효율적으로 검색하는 동시에 3분의 1로 그룹화하는 작업은 Oracle SQL에서 창 기능을 사용하여 쉽게 수행할 수 있습니다. 이 접근 방식은 다른 방법에 비해 우아함과 성능상의 이점을 제공합니다.

다음 샘플 테이블을 고려해보세요.

KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM

창 기능 솔루션

최적의 솔루션은 ROW_NUMBER()창 기능을 활용합니다.

<code class="language-sql">SELECT key, val
FROM (
  SELECT t.*,
         ROW_NUMBER() OVER (PARTITION BY key ORDER BY num DESC) AS seqnum
  FROM table_name t
) t
WHERE seqnum = 1;</code>
로그인 후 복사

이 쿼리의 결과는 다음과 같습니다.

KEY VAL
A AB
B EF
C HI
D LM

작동 방식

  1. OVER (PARTITION BY key ORDER BY num DESC) 절은 KEY 열을 기준으로 데이터를 분할하고 각 파티션을 NUM 열을 기준으로 내림차순으로 정렬합니다.
  2. ROW_NUMBER()은 파티션 내의 각 행에 고유한 순위를 할당합니다. NUM 값이 가장 높은 행은 1순위를 받습니다.
  3. 외부 WHERE 절은 결과를 필터링하여 seqnum = 1이 있는 행만 유지하고 각 NUM에 대해 최대 KEY 값을 효과적으로 선택합니다.

주요 차이점

중요한 점: 대체 방법과 달리 창 함수 접근 방식은 여러 행이 동일한 최대 KEY 값을 공유하더라도 NUM당 단일 행을 보장합니다. 이 동작은 이러한 경우 여러 행을 반환할 수 있는 다른 기술과 다를 수 있습니다. 이러한 구별이 중요하지 않다면 창 기능은 명확성과 효율성으로 인해 탁월한 솔루션을 제공합니다.

위 내용은 창 함수를 사용하여 Oracle SQL에서 최대 기반 값을 효율적으로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿