집 >데이터 베이스 >MySQL 튜토리얼 >SQL의 GROUP BY를 사용하여 각 그룹의 상위 N개 항목을 효율적으로 검색하는 방법은 무엇입니까?
SQL Group BY: 각 그룹의 상위 N개 항목 가져오기
SQL에서 데이터로 작업할 때 다음을 기반으로 레코드를 그룹화해야 하는 경우가 많습니다. 공통 기준을 적용하고 각 그룹 내에서 계산 또는 집계를 수행합니다. 여기서 GROUP BY 절이 사용됩니다. 이 기사에서는 GROUP BY와 ROW_NUMBER() 함수를 결합하여 단일 쿼리로 각 그룹의 상위 N개 항목을 효율적으로 검색하는 강력한 기술에 대해 설명합니다.
문제: 매장당 최고 판매 항목
UPCCode, SaleDate, StoreId 및 열이 포함된 Sales 테이블이 있는 시나리오를 생각해 보세요. 총달러판매. 작업은 각 매장에서 판매된 상위 5개 품목을 식별하는 것입니다.
쿼리:
UNION을 사용하여 여러 개별 쿼리로 이 문제에 접근할 수 있지만 그렇지 않을 수도 있습니다. 효율적이다. 대신 다음 쿼리는 하위 쿼리와 ROW_NUMBER() 함수를 활용합니다.
WITH s AS ( SELECT StoreID, UPCCode, tds, rn = ROW_NUMBER() OVER (PARTITION BY StoreID ORDER BY tds DESC) FROM ( SELECT StoreID, UPCCode, tds = SUM(TotalDollarSales) FROM Sales GROUP BY StoreID, UPCCode ) AS s2 ) SELECT StoreID, UPCCode, TotalDollarSales = tds FROM s WHERE rn <= 5 ORDER BY StoreID, TotalDollarSales DESC;
설명:
결론:
이 고급 SQL 쿼리를 사용하면 각 그룹의 상위 N개 항목을 효율적으로 수집하여 일반적인 데이터 처리 시나리오를 우아하게 처리하고 성능을 향상할 수 있습니다. 귀하의 쿼리 최적화 기술이 필요합니다.
위 내용은 SQL의 GROUP BY를 사용하여 각 그룹의 상위 N개 항목을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!