>데이터 베이스 >MySQL 튜토리얼 >SQL의 여러 범주에 걸쳐 상위 N개 레코드를 효율적으로 쿼리하는 방법은 무엇입니까?

SQL의 여러 범주에 걸쳐 상위 N개 레코드를 효율적으로 쿼리하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-21 06:11:08472검색

How to Efficiently Query Top N Records Across Multiple Categories in SQL?

SQL의 여러 범주에서 상위 N개 레코드 검색

이 SQL 기법은 단일 테이블 내의 다양한 범주에서 상위 N개 레코드(예: 상위 10개)를 효율적으로 검색합니다.

<code class="language-sql">SELECT rs.Field1, rs.Field2
FROM (
    SELECT Field1, Field2,
    RANK() OVER (PARTITION BY Section ORDER BY RankCriteria DESC) AS Rank
    FROM table
) rs
WHERE Rank <= 10;</code>

설명:

  • Field1Field2: 검색하려는 열을 나타냅니다.
  • 내부 SELECT 문은 RANK() 창 함수를 사용합니다. PARTITION BY Section은 '섹션' 카테고리를 기준으로 데이터를 그룹으로 나눕니다. ORDER BY RankCriteria DESC 순위 기준에 따라 각 섹션 내 기록을 내림차순으로 정렬합니다. Rank 섹션 내의 각 레코드에 순위를 할당합니다.
  • 외부 SELECT 문은 결과를 필터링하여 Rank 값이 10 이하(Rank <= 10)인 레코드만 유지합니다.

이 방법은 효율적이며 전용 행 제한 기능이 부족한 데이터베이스 시스템에서도 작동합니다. 성능이 중요한 경우에 적합합니다.

위 내용은 SQL의 여러 범주에 걸쳐 상위 N개 레코드를 효율적으로 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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