我想对用户付款的总金额进行求和,但结果不同。
我尝试使用 JOIN 组合 3 个表并添加列表 user_id、列表调查和每个用户的总金额。但是,总金额结果与我在单独的表中所做的不一样。
SELECT
users.user_id,
COUNT(DISTINCT participations.survey_id) as total_survey,
SUM(amount) as total_amount
FROM `angket.users` as users
RIGHT JOIN `angket.participations`as participations
using (user_id)
RIGHT JOIN `angket.payments`as payments
USING (user_id)
GROUP BY 1
ORDER BY 1
SELECT
user_id,
SUM(amount) as total_amount
FROM `angket.payments` as payments
LEFT JOIN `angket.users`as users
USING(user_id)
GROUP BY 1
ORDER BY 1
一旦您比较一个查询和另一个查询中的总和,答案就相对简单:
这会导致错误的部分笛卡尔积,从而导致各种付款的出现次数乘以参与次数,从而在与
partitipations
连接的查询中将金额求和 8、4 和 3 次。