我正在尝试将第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
我收到以下错误; “错误:行比较运算符必须产生布尔值类型,而不是数值类型”。我尝试了其他一些变体,这些变体大多给了我语法错误。
答案 0 :(得分:0)
我不知道您打算用当前的方法做什么。但是,如果您要取两个平均值的比率,则也可以取总和的比率:
SELECT SUM(CAST(Column1 AS numeric(4,2))) / SUM(CAST(Column2 AS numeric(4,2)))
FROM table1;
请注意,SUM()
仅接受一个输入,而不接受两个输入。之所以可以使用总和,是因为平均值可以将分子和分母都归一化为相同的量,即table1
中的行数。因此,这个因素抵消了。