我试图提到其他问题;我推断子查询不能在聚合函数上使用,但是我无法解决该用例。
Tables:
1. CustomerInfo(c_id,name)
2. ProductInfo(p_id,price)
3. ModelInfo(p_id,m_id,name)
4. PurchaseRecords(c_id,m_id,quantity)
必填输出:
客户名称列表,每个客户购买的总金额。
我的想法是:
将PurchaseRecords与ModelInfo链接以获得p_id
,
使用ModelInfo和ProductInfo来获取价格,
将每个特定客户的购买记录中返回的价格乘以数量返回的价格,
这需要我最后链接CustomerInfo以获得名称。
我正在使用Postgres。我可以用Java编写一个程序,但是用SQL很难做到。那么,这里正确的查询是什么?任何关于如何思考问题的指针都将受到赞赏!
答案 0 :(得分:1)
SELECT
c.name as customer_name,
sum(coalesce(p.price, 0) * coalesce(pr.quantity, 0)) as amount_purchased
from
CustomerInfo c
left join PurchaseRecords pr on c.c_id = pr.c_id
left join ModelInfo mi on mi.m_id = pr.m_id
left join ProductInfo p on p.p_id = mi.p_id
group by
c.name