首页 > 数据库 > mysql教程 > 如何使用单个 SQL 查询查找每个商店销售前 N 的商品?

如何使用单个 SQL 查询查找每个商店销售前 N 的商品?

Mary-Kate Olsen
发布: 2024-12-29 09:48:11
原创
746 人浏览过

How to Find the Top N Items Sold at Each Store Using a Single SQL Query?

用于确定每个商店前 N 个商品的 SQL 查询

要在单个查询中查找每个商店销售的前 N ​​个商品,我们可以利用 GROUP BY 和 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;
登录后复制

理解查询

  • 子查询 s2 计算每个项目(UPCCode)的总销售额(tds) store (StoreID)。
  • 外部查询使用WITH语句创建一个公共名为 s 的表表达式 (CTE)。在此 CTE 中,ROW_NUMBER() 用于根据总销售额降序排列 (DESC) 对每个商店内的商品进行排名。
  • 最终查询选择前 5 个商品(其中 rn 小于或等于5) 对于每个商店,按商店 ID 和总销售额降序对结果进行排序。

这种方法可以有效地检索最畅销的商品每个存储在单个 SQL 语句中,避免了多个查询或低效的 UNION 操作的需要。

以上是如何使用单个 SQL 查询查找每个商店销售前 N 的商品?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板