8

我有 Postgres 数据库,我必须像这样逐列相乘:

SELECT SUM(column1*column2) AS res (...)

结果是0。两列都是real类型。
但是当我这样做时,乘法运算符效果很好:

SELECT SUM(column * 100) AS res (...)

是否可以使用 PostgreSQL 中的列进行算术运算?

4

2 回答 2

12

这个查询工作得很好:

SELECT SUM(column1 * column2) AS res
FROM   tbl;

如果你的结果res0,那么你必须有:

  • 0在其中一列或两列中,并且NULL至少在一行中没有。
  • 0NULL在每个其他选定行的一列或两列中。

或者还有其他一些琐碎的误解。也许您将列别名resresult?

于 2013-09-23T23:19:31.467 回答
2

尝试使用子查询

SELECT
  SUM(subq.multiplied_column)
FROM (
  SELECT
    column1 * column2 AS multiplied_column
  FROM
    table
) as subq

还要注意 NULL 值。如果 column1 或 column2 中的某个值为 NULL,则 SUM() 的所有结果都可以为 NULL,并且根据您使用的语言和连接库,您可以看到 0 作为结果而不是 NULL。

于 2013-09-23T19:05:17.697 回答