>데이터 베이스 >MySQL 튜토리얼 >하위 쿼리 없이 Oracle에서 그룹당 상위 N개 결과를 얻는 방법은 무엇입니까?

하위 쿼리 없이 Oracle에서 그룹당 상위 N개 결과를 얻는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-19 15:01:38210검색

How to Get the Top N Results per Group in Oracle Without Subqueries?

Oracle 데이터베이스의 각 그룹에 대한 최고의 결과 얻기

질문:

하위 쿼리를 사용하지 않고 Oracle 데이터베이스의 각 그룹에 대한 상위 N개 결과를 가져옵니다.

예:

직원 정보가 포함된 주어진 테이블을 고려해보세요.

emp_id name occupation
1 John Smith Accountant
2 Jane Doe Engineer
3 Jack Black Funnyman

하위 쿼리를 사용하지 않고 각 직업에서 직원 3명(상위 3명)을 검색하는 것이 목표입니다.

해결책:

<code class="language-sql">select *
from (select emp_id, name, occupation,
      rank() over (partition by occupation order by emp_id) as rank
      from employee)
where rank <= 3;</code>

지침:

rank() 기능은 해당 직업 내에서 각 직원에게 순위를 지정하는 데 사용됩니다. partition by occupation 절은 각 직업이 별도로 순위를 매기는 것을 보장합니다.

rank <= 3 이 조건은 각 직업에서 순위가 ​​3 이하인 직원을 필터링합니다.

추가 정보:

rank() 기능에 대한 자세한 내용은 다음 리소스를 참조하세요. https://www.php.cn/link/56138186020206c2b1d99be41c8dc9b8

위 내용은 하위 쿼리 없이 Oracle에서 그룹당 상위 N개 결과를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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