首頁 >資料庫 >mysql教程 >如何使用單一 SQL 查詢檢索每個商店銷量最高的 N 件商品?

如何使用單一 SQL 查詢檢索每個商店銷量最高的 N 件商品?

DDD
DDD原創
2024-12-21 12:50:11261瀏覽

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

SQL 查詢來擷取每組銷售的前N 商品

在此問題中,使用者尋求SQL 查詢來擷取出的前5 件商品單一查詢中每家店的商品。提供的 Sales 表包含 UPCCode、SaleDate、StoreId 和 TotalDollarSales 等欄位。

為了獲得所需的結果,我們可以在單一 SQL 查詢中結合使用子查詢和分割區。以下是詳細細分:

  1. 計算每個UPCCode 的銷售總和的子查詢:

    • 計算每個唯一的TotalDollarSales 總和StoreId和的組合UPCCode.
  2. 將行號加到分區結果:

    • 按StoreId 對結果進行分區,並分配行號到每行以降序排列TotalDollarSales。
  3. 為每個商店選擇前N 個商品:

    • 過濾結果以僅包含以下行:數量小於或等於5。這將提供每個項目的前5 個項目store.
  4. 檢索最終結果:

    • 選擇前5名商品的StoreId、UPCCode 和TotalDollarSales每個

以下是結合了這些步驟的完整 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