Php PostgreSQL列乘法
我有Postgres数据库,我必须像这样逐列乘以:Php PostgreSQL列乘法,php,sql,postgresql,null,aggregate-functions,Php,Sql,Postgresql,Null,Aggregate Functions,我有Postgres数据库,我必须像这样逐列乘以: SELECT SUM(column1*column2) AS res (...) 结果是0。两列均为real类型。 但当我这样做时,乘法运算符非常有效: SELECT SUM(column * 100) AS res (...) 可以在PostgreSQL中使用列进行算术运算吗?尝试使用子查询 SELECT SUM(subq.multiplied_column) FROM ( SELECT column1 * column2
SELECT SUM(column1*column2) AS res (...)
结果是0
。两列均为real
类型。但当我这样做时,乘法运算符非常有效:
SELECT SUM(column * 100) AS res (...)
可以在PostgreSQL中使用列进行算术运算吗?尝试使用子查询
SELECT
SUM(subq.multiplied_column)
FROM (
SELECT
column1 * column2 AS multiplied_column
FROM
table
) as subq
还要注意空值。如果column1或column2中的某个值为NULL,则SUM()的所有结果都可以为NULL,并且根据您使用的语言和连接库,可以将0作为结果而不是NULL。此查询工作正常:
SELECT SUM(column1 * column2) AS res
FROM tbl;
如果结果res
为0
,则必须具备:
在一列或两列中,并且至少一行中没有一列0
NULL
或0
在每一其他选定行的一列或两列中NULL
或者还有其他一些琐碎的误解。可能您将列别名res与result混淆了?如何检查res=0?您是否尝试在pgAdmin中执行查询?您是否有一些示例输入?在任一列中是否有任何
NULL
值或0
?请发布完整的查询和示例值。几乎可以对列执行任何算术运算。一定是有什么误解。这个答案是错误的。子查询是绝对不必要的@阿格娜一定是被别的问题绊倒了。此外,聚合函数在将符合条件的行中的值相加时忽略NULL
值。只有当a)所有列都是NULL
(在这种情况下:每行中相乘的两列中至少有一列)或b)未选择任何行时,结果才能为NULL。好的,您是对的:)它工作正常,但不能在所有行中都有0。