我有Postgres数据库,我必须逐列逐列:
SELECT SUM(column1*column2) AS res (...)
结果是0
。两列均为real
类型
但是当我这样做时,乘法算子很有效:
SELECT SUM(column * 100) AS res (...)
是否可以使用PostgreSQL中的列进行算术运算?
答案 0 :(得分:8)
这个查询很好用:
SELECT SUM(column1 * column2) AS res
FROM tbl;
如果您的结果res
为0
,那么您必须拥有:
0
位于其中一列或两列中,且至少在一行中均未NULL
。0
或NULL
。或者还有其他一些微不足道的误解。也许您将列别名res
与result
混淆了?
答案 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。