【发布时间】:2020-03-26 13:00:51
【问题描述】:
在 postgresql 9.3 中使用 LEFT OUTER JOIN 时,我遇到了计数聚合问题。
当我在没有左外连接的情况下执行标准语句时,它返回正确的计数,在这种情况下为 3。当语句变得更复杂时,如下面的语句,它返回 7 而不是不正确的。
只有一些 count() 聚合不正确,其中大部分是正确的。这是什么原因造成的?我应该使用其他联接吗?
SELECT country_code,
period,
COUNT(commissions.id) AS count,
SUM(commissions.total) AS total,
SUM(CASE WHEN commission_adjustments.is_bonus is True THEN commission_adjustments.total else 0 END) AS bonus
FROM commissions
LEFT OUTER JOIN commission_adjustments ON commissions.id = commission_adjustments.commission_id
GROUP BY commissions.country_code, commissions.period
ORDER BY commissions.country_code, commissions.period
【问题讨论】:
-
您可能想要
count(commission_adjustments.commission_id),但没有一些示例数据,而且您所期望的结果很难说 -
你是对的,我现在已经编辑了。是的,我知道没有样本数据很难。我希望声明本身可能会很明显。
标签: sql postgresql join count postgresql-9.3