将第1列的AVG除以第2列的AVG

时间:2019-06-19 13:35:44

标签: postgresql

我正在尝试将第1列的平均值除以第2列的平均值,这将根据我的数据得出平均价格。我认为我的语法/代码结构有问题,或者我是菜鸟犯错。

我已经搜索了堆栈,却找不到许多将两个平均列相除的示例,并检查了postgres文档。

单个平均查询运行正常(如下所示) SELECT (AVG(CAST("Column1" AS numeric(4,2))),2) FROM table1

但是当我将它们中的两个结合在一起试图进行划分时,它根本不起作用。

SELECT (AVG(CAST("Column1" AS numeric(4,2))),2) / (AVG(CAST("Column2" AS numeric(4,2))),2) FROM table1

我收到以下错误; “错误:行比较运算符必须产生布尔值类型,而不是数值类型”。我尝试了其他一些变体,这些变体大多给了我语法错误。

1 个答案:

答案 0 :(得分:0)

我不知道您打算用当前的方法做什么。但是,如果您要取两个平均值的比率,则也可以取总和的比率:

SELECT SUM(CAST(Column1 AS numeric(4,2))) / SUM(CAST(Column2 AS numeric(4,2)))
FROM table1;

请注意,SUM()仅接受一个输入,而不接受两个输入。之所以可以使用总和,是因为平均值可以将分子和分母都归一化为相同的量,即table1中的行数。因此,这个因素抵消了。

相关问题