집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL의 각 그룹 내에서 처음 N 행을 효율적으로 가져오는 방법은 무엇입니까?
PostgreSQL: 각 그룹 내 상위 N개 행 검색
PostgreSQL에서 자주 수행되는 작업은 각 그룹에서 설정된 수의 행을 선택하는 것입니다. 이는 "Grouped LIMIT"라고 불리는 기술을 사용하여 효율적으로 달성할 수 있습니다. 창 기능(PostgreSQL 8.4 이상에서 사용 가능)을 사용하여 이를 수행하는 방법은 다음과 같습니다.
<code class="language-sql">SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS rn, t.* FROM xxx t ) AS x WHERE rn <= N;</code>
설명:
ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name)
창 함수는 rn
열을 기준으로 각 section_id
그룹 내의 각 행에 고유한 순위(name
)를 할당합니다. 그런 다음 외부 쿼리는 이러한 결과를 필터링하여 순위(rn
)가 N
보다 작거나 같은 행만 유지합니다(N
를 원하는 그룹당 행 수로 바꿉니다). 이렇게 하면 결과가 각 그룹의 상위 N
행으로 효과적으로 제한됩니다.
위 내용은 PostgreSQL의 각 그룹 내에서 처음 N 행을 효율적으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!