SQL로 카테고리별 상위 10개 레코드 추출
빈번한 데이터베이스 작업에는 단일 SQL 쿼리의 각 범주에서 상위 항목을 검색하는 작업이 포함됩니다. 이는 일반적으로 분할과 결합된 순위 기능을 사용하여 수행됩니다. "비즈니스", "로컬" 및 "기능"과 같은 범주가 있는 데이터베이스를 중심으로 SQL을 사용하여 이를 수행하는 방법을 살펴보겠습니다.
섹션당 상위 10개 레코드를 위한 SQL Server 2005 솔루션
SQL Server 2005에서는 다음 쿼리가 원하는 결과를 제공합니다.
<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>
이 쿼리는 RANK()
열을 기준으로 해당 섹션 내에서 각 레코드의 순위를 매기는 RankCriteria
함수를 활용합니다. PARTITION BY
절은 레코드를 Section
으로 구분하여 각 카테고리에 대한 독립적인 순위를 보장합니다.
순위 동점 처리
RANK()
에서는 동점을 효과적으로 처리하지 못한다는 점을 이해하는 것이 중요합니다. 여러 레코드가 동일한 RankCriteria
값을 공유하는 경우 동일한 순위를 받습니다. 동점이 존재할 경우 한 섹션에 대해 10개 이상의 레코드가 반환될 수 있습니다.
이 문제를 완화하려면 대신 ROW_NUMBER()
을 사용해 보세요. ROW_NUMBER()
각 파티션 내에 고유한 일련 번호를 할당하여 보다 정확한 상위 10개 선택을 제공합니다. 하지만 이 접근 방식은 일부 시나리오에서 복잡성을 더할 수 있습니다.
위 내용은 SQL을 사용하여 각 범주에서 상위 10개 레코드를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!