Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PostgreSQL列乘法_Php_Sql_Postgresql_Null_Aggregate Functions - Fatal编程技术网

Php PostgreSQL列乘法

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

我有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 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。