>데이터 베이스 >MySQL 튜토리얼 >Oracle SQL을 사용하여 그룹화된 데이터의 각 키에 대한 최대 VAL을 가져오는 방법은 무엇입니까?

Oracle SQL을 사용하여 그룹화된 데이터의 각 키에 대한 최대 VAL을 가져오는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-17 19:11:08352검색

How to Fetch the Maximal VAL for Each KEY in Grouped Data Using Oracle SQL?

Oracle SQL에서 각 KEY에 대해 가장 높은 VAL 추출

이 가이드는 Oracle SQL을 사용하여 그룹화된 데이터의 각 VAL에 대한 최대 KEY를 효율적으로 검색하는 방법을 보여줍니다. 일반적인 시나리오를 살펴보겠습니다.

TABLE_NAME이라는 테이블에는 다음 데이터가 포함되어 있습니다.

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

목표는 각 고유 VAL:KEY에 대해 최대

만 표시하는 결과 집합을 생성하는 것입니다.
KEY VAL
A AB
B EF
C HI
D LM

효율적인 Oracle SQL 솔루션(10g 이상):

하위 쿼리로 이를 달성할 수 있지만 더 우아하고 더 빠른 솔루션은 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>

이 쿼리는 먼저 seqnum 기준으로 내림차순으로 정렬된 각 KEY 파티션 내의 각 행에 순위(NUM)를 할당합니다. 그런 다음 seqnum = 1이 있는 행만 포함하도록 결과를 필터링하여 가장 높은 NUM이 있는 행을 효과적으로 선택합니다(따라서 각 내 VALNUM 사이의 일관된 관계를 가정하여 암시적으로 가장 높은 VAL가 선택됩니다). 키).

중요 사항: 이 방법은 KEY당 하나의 행을 보장합니다. NUM에서 잠재적 동점을 다르게 처리해야 하는 경우(예: 여러 행이 최대값 KEY을 공유하는 경우 NUM에 대해 여러 행 반환) RANK() 대신 DENSE_RANK() 또는 ROW_NUMBER()을 사용하는 것이 좋습니다.

위 내용은 Oracle SQL을 사용하여 그룹화된 데이터의 각 키에 대한 최대 VAL을 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.