技术问询:如何获取Quantity_by_Category字段的最大值?
获取Quantity_by_Category字段最大值的方法
针对你的需求,这里提供两种常见的实现方案,适配不同的场景:
方案1:仅获取最大值的数值
将现有分组求和的查询作为子查询,在外层使用MAX()聚合函数直接提取最大值:
SELECT MAX(Quantity_by_Category) AS Max_Quantity_by_Category FROM ( SELECT SUM(pd.Quantity) AS Quantity_by_Category FROM Purchase_Details pd INNER JOIN Products p ON pd.ProductID = p.ProductID GROUP BY pd.ProductID ) AS Category_Sums;
方案2:获取最大值对应的产品信息
如果需要同时知道哪个产品/分类的求和值最大(支持并列最大值),可以使用窗口函数RANK():
SELECT ProductID, ProductCategory, Quantity_by_Category FROM ( SELECT p.ProductID, p.ProductCategory, SUM(pd.Quantity) AS Quantity_by_Category, RANK() OVER (ORDER BY SUM(pd.Quantity) DESC) AS rank_num FROM Purchase_Details pd INNER JOIN Products p ON pd.ProductID = p.ProductID GROUP BY p.ProductID, p.ProductCategory -- 修正原GROUP BY,确保与SELECT字段匹配 ) AS Ranked_Results WHERE rank_num = 1;
- 若使用
ROW_NUMBER()替代RANK(),当存在并列最大值时只会返回其中一条记录,适合只需要单一结果的场景。 - 原SQL的
GROUP BY仅指定pd.ProductID,在多数严格SQL模式下会报错(因为SELECT包含p.ProductCategory),因此修正为同时分组p.ProductID和p.ProductCategory(通常ProductID与ProductCategory是一一对应关系,不会影响分组结果)。
内容的提问来源于stack exchange,提问作者user19629867
相关产品推荐
相关产品推荐

