首页 > 解决方案 > 获得基于年份的畅销产品

问题描述

我想写一个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 

标签: mysqlsql

解决方案


从您的评论中:

如果设置条件为 2000,则查询工作正常。但如果我将其设置为 3000,则它不会返回任何内容。如果我使用这个“count() > 2000”,那么我会得到两条记录。2013 年的第一个返回总量 3913 和 2014 年的记录总量为 2902。但是当我将条件更改为“具有 count() > 3000”时,它什么也不返回。但它应该返回 2013 年的记录

您选择 OrderQty 的总和,但您过滤计数并期望它是相同的。Count 是记录的数量,它不关心记录中的实际值。

当您过滤时

having sum(OrderQty) > 3000

你只会得到2013年的记录。


推荐阅读