PostgreSQL合并Count与Sum查询结果不符,求正确SQL语句
正确的PostgreSQL查询方案:统计指定条件的行数加字段总和
你的查询返回4的原因是外层多套了一层SUM():里面的子查询已经算出sum(perscarcountoffset)(0)加上count(*)(2)的结果是2,而外层SUM()会把这个结果和符合person=1的2条记录做累加,相当于2*2=4,所以得到了错误结果。
以下是两种正确的查询方案:
方案一:单表聚合计算
SELECT SUM(perscarcountoffset) + COUNT(*) AS total FROM your_table_name WHERE person = 1;
这个查询直接在person=1的数据集上,同时计算字段总和与记录行数,两者相加后得到预期的0+2=2。
方案二:独立子查询相加
SELECT (SELECT SUM(perscarcountoffset) FROM your_table_name WHERE person = 1) + (SELECT COUNT(*) FROM your_table_name WHERE person = 1) AS total;
这种写法通过两个独立的子查询分别计算总和与行数,再直接相加,同样能得到正确结果。
注意:请将查询中的your_table_name替换为你实际的表名。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

