【发布时间】:2014-01-21 06:08:25
【问题描述】:
我正在尝试在以下查询中再包含一列,以显示其中两列的平均值。我是 SQL 和 PostgreSQL 的新手,但参考以下链接 http://www.postgresql.org/docs/9.3/interactive/index.html
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;
但我在执行相同操作时遇到以下错误
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 是其他两列的average 列。
任何帮助将不胜感激。
[编辑]
尝试Group By,但仍然出现同样的错误,谁能纠正我在下面的查询中也做错了什么
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;
【问题讨论】:
-
您只是想显示两个值的除法,还是列中所有值的平均值,按您明确的其他列分组?
-
我用你的例子做了一个小提琴,看不出你为什么会出错,你能检查一下差异吗? sqlfiddle.com/#!15/be661/1
-
我只需要显示两列的平均值,例如:avg(8/2) 还在另一列中进一步显示 avg(8+2/2),我是新手查询,所以可能是我犯了一个错误,请您纠正我在这种情况下我应该怎么做?
-
谢谢亚历克斯,你是对的,我的表现和我的表现一样,我不知道为什么我在
postgreSQL中收到这个错误:( -
您是否有机会在另一个查询中运行此查询?
标签: sql postgresql average