我有 Postgres 数据库,我必须像这样逐列相乘:
SELECT SUM(column1*column2) AS res (...)
结果是0
。两列都是real
类型。
但是当我这样做时,乘法运算符效果很好:
SELECT SUM(column * 100) AS res (...)
是否可以使用 PostgreSQL 中的列进行算术运算?
我有 Postgres 数据库,我必须像这样逐列相乘:
SELECT SUM(column1*column2) AS res (...)
结果是0
。两列都是real
类型。
但是当我这样做时,乘法运算符效果很好:
SELECT SUM(column * 100) AS res (...)
是否可以使用 PostgreSQL 中的列进行算术运算?
这个查询工作得很好:
SELECT SUM(column1 * column2) AS res
FROM tbl;
如果你的结果res
是0
,那么你必须有:
0
在其中一列或两列中,并且NULL
至少在一行中没有。0
或NULL
在每个其他选定行的一列或两列中。或者还有其他一些琐碎的误解。也许您将列别名res
与result
?
尝试使用子查询
SELECT
SUM(subq.multiplied_column)
FROM (
SELECT
column1 * column2 AS multiplied_column
FROM
table
) as subq
还要注意 NULL 值。如果 column1 或 column2 中的某个值为 NULL,则 SUM() 的所有结果都可以为 NULL,并且根据您使用的语言和连接库,您可以看到 0 作为结果而不是 NULL。