列出所有产品(PRODUCT_ID、PRODUCT_NAME)及其剩余库存(QUANTITY_IN_STOCK - REORDER_POINT)。仅列出剩余库存大于平均REORDER_QTY值的行。
到目前为止,我们有:
SELECT product_name, product_id, quantity_in_stock - reorder_point
FROM product
WHERE quantity_in_stock - reorder_point > avg(reorder_qty)
GROUP BY product_name;我们遇到的问题是avg(reorder_qty),但我们做了一些谷歌搜索,并查看了我们的文本。任何帮助都将不胜感激。:)
我知道问家庭作业问题通常是禁忌的,但我们不是在问答案,而是在解释我们哪里做错了,这会让我们自己找到答案。:)
谢谢!
发布于 2013-09-24 00:52:35
您不能在WHERE子句中使用像avg这样的聚合函数,因为WHERE控制哪些行进入GROUP BY语句。您需要对分组数据的输出施加一个条件。HAVING子句做到了这一点。
发布于 2013-09-24 00:59:39
where子句希望过滤由语句的from部分返回的行。
这需要一段时间来适应,但实际上你的问题有两个部分。它们恰好指的是同一个来源:
1.平均再订购数量是多少
和
2.我的库存是否比平均再订购数量多?
我建议您尝试分别执行这两个步骤,然后尝试将它们组合在一起。首先,什么查询将告诉您平均重新订购数量,然后使用该值作为常量,尝试让您的更大的查询工作。
一旦你工作了,你会发现用你的查询替换你的固定值来获得这个值是很容易的。
发布于 2013-09-24 00:54:51
执行GROUP BY时,SELECT不能引用不在GROUP BY中的任何列。此外,任何需要聚合函数的筛选都必须作为HAVING子句的一部分来完成。考虑使用子查询来获取平均再订货量。
https://stackoverflow.com/questions/18964609
复制相似问题