WHERE子句和GROUP BY子句出现MySQL错误

WHERE子句和GROUP BY子句出现MySQL错误,mysql,join,group-by,where,logical-operators,Mysql,Join,Group By,Where,Logical Operators,我试图编写一个查询,从上表中检索订单超过1300美元的所有销售人员的姓名。(每个销售人员只有一个ID) 以下是我的尝试: SELECT name, sum(amount) FROM salesperson JOIN orders ON salesperson.ID = orders.salesperson_id WHERE sum(amount) > 1300 GROUP BY name; 但是,它会显示错误:错误1111(HY000):组函数的使用无效 当我删除where

我试图编写一个查询,从上表中检索订单超过1300美元的所有销售人员的姓名。(每个销售人员只有一个ID)

以下是我的尝试:

SELECT name, sum(amount)

FROM salesperson

JOIN orders

ON salesperson.ID = orders.salesperson_id

WHERE sum(amount) > 1300 

GROUP BY name; 
但是,它会显示错误:错误1111(HY000):组函数的使用无效

当我删除where子句时,它工作正常并返回以下内容:

这和我想要的非常相似,除了总和(数量)小于1300没有过滤器


where子句有什么问题?如何解决?

聚合不能出现在
where
子句中,但可以通过以下方式使用
HAVING

SELECT name, sum(amount)

FROM salesperson

JOIN orders

ON salesperson.ID = orders.salesperson_id

GROUP BY name

Having sum(amount) > 1300; 

请阅读(聚合后过滤)。无位置<代码>在分组后的总和(金额)>1300。问题是操作顺序。where子句在select之前执行;所以金额还没有确定。having子句在select之后执行;这意味着这个总数是已知的,可以用作过滤器。如果你开始使用像sqlfiddle.com这样的网站来发布这些问题,我们会很容易帮助你。它对您来说也是一个非常好的工具,因为我认为它是sql的新手。请不要在本网站的截图中粘贴文本(如控制台输出)。请阅读-总结是,这不是向志愿者致辞的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。嗨。请使用链接/图像仅为方便补充文本和/或文本中无法给出的内容。不要给出没有图例/键的图表。如果您有代表,请使用编辑函数内联,而不是链接,使您的帖子自包含。您也可以参考此堆栈溢出帖子()谢谢您的帮助。我参加的在线课程没有涉及“拥有”,所以我不知道。现在我知道是因为你的帮助。谢谢