【发布时间】:2019-11-21 17:38:40
【问题描述】:
我有 4 张桌子:
accounts_info
----------------------------------------------
user_id | user_type | user_page | device_type
hostel_billing (can have duplicate user_id)
-------------------------
user_id | billing_charges
academic_billing (can have duplicate user_id)
-------------------------
user_id | academic_charges
misc_billing (can have duplicate user_id)
-------------------------
user_id | misc_charges
我想创建一个新表,从以上 4 个表中提取数据:
user_expenses
---------------------------------------------------------------
user_id | user_type | user_page | device_type | total_charges
total_charges 将是total_charges = misc_charges + academic_charges + billing_charges 的总和。
我无法计算总费用。
到目前为止,我已经能够获得 misc_charges、academic_charges 和 billing_charges 的总和 对于使用此查询的每个 user_id,但无法弄清楚如何总结从分别加入 hostel_billing、misc_billing 和 Academic_billing 获得的三列 hostel_charges、misc_charges 和 Academic_charges:
with user_info as (
select
user_id, user_type, user_page, device_type
from accounts_info
),
academics as (
select user_id, sum(academic_charges) as academic from academic_billing group by 1
),
hostels as (
select user_id, sum(hostel_charges) as hostel from hostel_billing group by 1
),
misc as (
select user_id, sum(misc_charges) as misc from misc_billing group by 1
)
select
ui.user_id,
ui.user_page,
ui.user_type,
ui.device_type,
sum(a.academic_charges),
sum(m.misc_charges),
sum(h.hostel_charges)
from user info ui left join misc m on ui.user_id=m.user_id
left join hostels h on ui.user_id=h.user_id
left join academics a on ui.user_id=a.user_id
group by 1,2,3,4
【问题讨论】: