求和此列

问题描述 投票:0回答:1

我想对用户付款的总金额进行求和,但结果不同。

我尝试使用 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

with JOIN

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

1

sql google-bigquery
1个回答
0
投票

一旦您比较一个查询和另一个查询中的总和,答案就相对简单:

  • User_id 'U0000' 参与了8次
  • User_id 'U0001' 参与了 4 次
  • User_id 'U0002' 参与了3次

这会导致错误的部分笛卡尔积,从而导致各种付款的出现次数乘以参与次数,从而在与

partitipations
连接的查询中将金额求和 8、4 和 3 次。

© www.soinside.com 2019 - 2024. All rights reserved.