>데이터 베이스 >MySQL 튜토리얼 >단일 SQL 쿼리를 사용하여 매장당 상위 N개 판매 항목을 검색하는 방법은 무엇입니까?

단일 SQL 쿼리를 사용하여 매장당 상위 N개 판매 항목을 검색하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-21 12:50:11310검색

How to Retrieve the Top N Sold Items per Store Using a Single SQL Query?

그룹당 판매된 상위 N개 품목을 검색하는 SQL 쿼리

이 질문에서 사용자는 판매된 상위 5개 품목을 검색하는 SQL 쿼리를 찾습니다. 단일 쿼리로 각 매장의 항목을 검색할 수 있습니다. 제공된 Sales 테이블에는 UPCCode, SaleDate, StoreId 및 TotalDollarSales와 같은 열이 포함되어 있습니다.

원하는 결과를 얻기 위해 단일 SQL 쿼리 내에서 하위 쿼리와 파티셔닝의 조합을 활용할 수 있습니다. 자세한 분석은 다음과 같습니다.

  1. 각 UPC코드의 매출 합계를 계산하는 하위 쿼리:

    • 각 고유의 TotalDollarSales 합계를 계산합니다. StoreId와 UPCCode.
  2. 분할된 결과에 행 번호 추가:

    • StoreId로 결과를 분할하고 행 번호를 할당합니다. 각 행의 내림차순 TotalDollarSales.
  3. 각 매장의 상위 N개 항목 선택:

    • 행이 있는 행만 포함하도록 결과를 필터링합니다. 숫자는 5보다 작거나 같습니다. 이렇게 하면 각 항목에 대해 상위 5개 항목이 제공됩니다. store.
  4. 최종 결과 검색:

    • 상위 5개 항목에 대해 StoreId, UPCCode 및 TotalDollarSales를 선택합니다. 각 store.

다음은 이러한 단계를 결합한 전체 SQL 쿼리입니다.

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개 판매 항목을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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