首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中的语法混乱

SQL中的语法混乱
EN

Stack Overflow用户
提问于 2013-09-24 00:46:30
回答 3查看 146关注 0票数 3

列出所有产品(PRODUCT_ID、PRODUCT_NAME)及其剩余库存(QUANTITY_IN_STOCK - REORDER_POINT)。仅列出剩余库存大于平均REORDER_QTY值的行。

到目前为止,我们有:

代码语言:javascript
复制
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),但我们做了一些谷歌搜索,并查看了我们的文本。任何帮助都将不胜感激。:)

我知道问家庭作业问题通常是禁忌的,但我们不是在问答案,而是在解释我们哪里做错了,这会让我们自己找到答案。:)

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-09-24 00:52:35

您不能在WHERE子句中使用像avg这样的聚合函数,因为WHERE控制哪些行进入GROUP BY语句。您需要对分组数据的输出施加一个条件。HAVING子句做到了这一点。

票数 2
EN

Stack Overflow用户

发布于 2013-09-24 00:59:39

where子句希望过滤由语句的from部分返回的行。

这需要一段时间来适应,但实际上你的问题有两个部分。它们恰好指的是同一个来源:

1.平均再订购数量是多少

2.我的库存是否比平均再订购数量多?

我建议您尝试分别执行这两个步骤,然后尝试将它们组合在一起。首先,什么查询将告诉您平均重新订购数量,然后使用该值作为常量,尝试让您的更大的查询工作。

一旦你工作了,你会发现用你的查询替换你的固定值来获得这个值是很容易的。

票数 2
EN

Stack Overflow用户

发布于 2013-09-24 00:54:51

执行GROUP BY时,SELECT不能引用不在GROUP BY中的任何列。此外,任何需要聚合函数的筛选都必须作为HAVING子句的一部分来完成。考虑使用子查询来获取平均再订货量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18964609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档