当前位置: 首页 > 面试题库 >

如何避免错误“在WHERE中不允许使用聚合函数”。

邰昀
2023-03-14
问题内容

此sql代码抛出一个

WHERE中不允许使用聚合函数

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
WHERE count(p.CAT) > 3
GROUP BY o.ID;

如何避免此错误?


问题答案:

用替换WHERE子句HAVING,如下所示:

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID
HAVING count(p.CAT) > 3;

HAVING与相似WHERE,两者均用于过滤结果记录,但HAVING用于过滤汇总数据(GROUP BY使用时)。



 类似资料:
  • 我们有一个员工姓名表,其中列有ID、name、salary 查询1不起作用,但查询2起作用。从我的开发经验来看,我觉得对此可能的解释是: sum()处理参数中指定的一组值。这里传递了'salary'列,因此它必须将此列的所有值相加。但是在where子句中,记录是一个接一个地检查的,就像第一条记录1是为了测试而检查的,等等。因此,不会计算sum(工资),因为它需要访问所有列的值,然后只有它返回一个值

  • 我正在将oracle从10升级到12,对于这个特定的项目,我遇到了以下错误: 似乎它没有识别我在DataSource上添加的配置: 我们使用的是Java 8,我们对代码有这些依赖关系: 问题是它正在为另一个项目工作(与这个项目具有相同的结构,但由于某种原因它在这里不起作用) 是否有任何遗漏或我可以找到问题并解决问题的地方?

  • 我在尝试使用类名时遇到代码问题。我已尝试并运行时错误32显示为: 也许有人可以帮助编写下面的代码。我有chrome浏览器103.5060.114,但web驱动程序103.5060.56。我找不到其他司机下载。 超文本标记语言: VBA代码: 我的目标是将发送接收WhatsApp图标带到Excel表

  • 问题内容: 我收集了大约1M个文档。每个文档都有属性,我需要在node.js代码中获取所有。 以前我在用 要么 在Node中。 但是随着集合的增长,我开始出现错误:。 现在,我想使用聚合。它消耗大量内存,速度很慢,但是可以,因为我在脚本启动时只需要执行一次。我在Robo 3T GUI工具中尝试了以下操作: 它有效,我想按以下方式在node.js代码中使用它: 但是在Node中,我收到一个错误:。

  • 问题内容: 我试图写一个近似平方根的函数(我知道有数学模块……我想自己做),但我被浮点运算搞砸了。如何避免这种情况? 使用它会产生以下结果: 我意识到我可以使用,但是我希望能够做到这一点非常准确。我希望能够计算出6或7位数字。如果我四舍五入,那将是不可能的。我想了解如何在Python中正确处理浮点计算。 问题答案: 这实际上与Python无关- 使用硬件的二进制浮点算法,您会在任何语言中看到相同的

  • 我得到以下错误: "不允许使用复合类名" 尝试访问Web元素时,元素的类名之间有空格。Web元素的页面源如下所示。 我试图通过CSS路径找到元素,如下所示。但是这个元素是不可搜索的。 这是在链接中给出的解决方法,但仍然没有成功。你的帮助将不胜感激。