Sql 错误:无法嵌套聚合函数调用
我试图在下面的查询中再包含一列,以显示其中两列的平均值。我不熟悉SQL和PostgreSQL,但参考以下链接 但是在执行相同的操作时,我得到了以下错误Sql 错误:无法嵌套聚合函数调用,sql,postgresql,average,Sql,Postgresql,Average,我试图在下面的查询中再包含一列,以显示其中两列的平均值。我不熟悉SQL和PostgreSQL,但参考以下链接 但是在执行相同的操作时,我得到了以下错误 ERROR: aggregate function calls cannot be nested LINE 1: ...col2,md.col3,ad.col4,mcd.col5, AVG(md.col3/m... ^ *
ERROR: aggregate function calls cannot be nested
LINE 1: ...col2,md.col3,ad.col4,mcd.col5, AVG(md.col3/m...
^
********** Error **********
ERROR: aggregate function calls cannot be nested
SQL state: 42803
Character: 77
谁能告诉我哪里做错了,我需要纠正什么才能让它起作用
所需产出:
col1 | col2 | col3 |col4 | col5| cb|
其中,cb
是其他两列的平均值
列
任何帮助都将不胜感激
[编辑]
试图按分组,但仍然得到相同的错误,有人能纠正我在下面的查询中的错误吗
select ad.col1, ad.col2, md.col3, ad.col4, mcd.col5,
AVG(md.col3/mcd.col4) as cb
from month_date as md
JOIN active_date as ad ON ad.col1=md.col1 AND ad.col2=md.col2
JOIN mdata1 as mcd ON mcd.col1=md.col1 AND mcd.col2=md.col2 GROUP BY ad.col1,ad.col2,md.col3,ad.col4,mcd.col5;
要在SQL中使用AVG()或任何类型的聚合函数,需要为正在显示的其他列设置一个GROUP BY
这样想,当您选择一列时,您将显示行。当显示平均值时,将显示单个输出。不能将行和单个输出放在一起
您需要尝试以下内容:
SELECT col1, col2, AVG(col3)
FROM table1
GROUP BY col1, col2
我用您的示例创建了一个查询,您可以看到该查询按原样工作。这可能是包装查询、存储过程或函数中的一个错误。谢谢您,不祥,是的,您是对的。我已经在一个查询中单独完成了相同的操作,但是我如何才能在我上面提到的查询中集成相同的操作,因为我已经有了两个
内部连接尝试如下:选择ad.col1、ad.col2、md.col3、ad.col4、mcd.col5、AVG(md.col3/mcd.col4)作为cb从月日起作为md加入活动日作为ad.col1=md.col1和ad.col2=md.col2上的ad加入mdata1作为mcd上的mcd.col1=md.col1和mcd.col2=md.col2组,按ad.col1、ad.col2、md.col3、ad.col4、mcd.col5但是还是一样的错误,如果我做错了什么,你能纠正我吗?嗯,奇怪。使用alex siri制作的fiddle,您编辑的查询看起来很好…您能向我们展示一下您使用的表结构和数据类型吗?您只是想显示两个值的划分,还是列中所有值的平均值,由您明确指定的其他列分组?我用您的示例创建了一个fiddle,我看不出你为什么会出错,你能检查一下差异吗?我只需要显示两列除法的平均值,例如:avg(8/2)在另一列中我还需要显示avg(8+2/2),我对查询是新手,所以可能我犯了错误,请你纠正我在这种情况下该怎么办?谢谢你Alex,你说得对,我的表现也一样,我不知道为什么在postgreSQL
中会出现这样的错误:(您是否有可能在另一个查询中运行此查询?
SELECT col1, col2, AVG(col3)
FROM table1
GROUP BY col1, col2