집 >데이터 베이스 >MySQL 튜토리얼 >하위 쿼리 없이 Oracle에서 그룹당 상위 N개 결과를 얻는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!