PostgreSQL列的乘法

时间:2013-09-23 18:57:39

标签: php sql postgresql null aggregate-functions

我有Postgres数据库,我必须逐列逐列:

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

结果是0。两列均为real类型 但是当我这样做时,乘法算子很有效:

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

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

2 个答案:

答案 0 :(得分:8)

这个查询很好用:

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

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

  • 0位于其中一列或两列中,且至少在一行中均未NULL
  • 每个其他所选行的一列或两列中的
  • 0NULL

或者还有其他一些微不足道的误解。也许您将列别名resresult混淆了?

答案 1 :(得分:1)

尝试使用子查询

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

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