mysql - 获得基于年份的畅销产品
问题描述
我想写一个sql query
从表中获得每年最好的产品。我已product-id
对 qty 进行分组并求和,以获得每个 id 的产品总数。
我将datetime
函数转换为年份以获取年份但输出错误..
任何人都可以帮助我吗?
SELECT Year(ModifiedDate), ProductID, SUM(OrderQty) AS TotalQuantity
from Sales.SalesOrderDetail
GROUP BY ProductID, year(ModifiedDate)
having count(*) > 3000
ORDER BY SUM(OrderQty) DESC
解决方案
从您的评论中:
如果设置条件为 2000,则查询工作正常。但如果我将其设置为 3000,则它不会返回任何内容。如果我使用这个“count() > 2000”,那么我会得到两条记录。2013 年的第一个返回总量 3913 和 2014 年的记录总量为 2902。但是当我将条件更改为“具有 count() > 3000”时,它什么也不返回。但它应该返回 2013 年的记录
您选择 OrderQty 的总和,但您过滤计数并期望它是相同的。Count 是记录的数量,它不关心记录中的实际值。
当您过滤时
having sum(OrderQty) > 3000
你只会得到2013年的记录。
推荐阅读
- java - 要打印的数组的非相邻元素的最大总和
- java - 如何从 Java 中的超类访问子类?
- postgresql - Concatenate result of a SELECT into an EXECUTE
- date - 在赛普拉斯的日期输入上按 Enter
- c - 如果有的话,在 C 中如何“接近”其他变量存储的规则是什么?
- android - 将单个文本视图拆分为多个页面
- python - 使用 Pandas DataFrame 逐行查找过去 6 个月的事件
- hazelcast - 从应用程序定义地图加载器的正确方法 - hazelcast
- php - 根据请求的来源,从 API 获取具有不同结果的数据时出现问题
- matlab - 如何在 MATLAB 中的图表中显示矩阵?