PostgreSQL:子查询和聚合函数(总和)

时间:2018-12-28 10:42:38

标签: sql postgresql

我试图提到其他问题;我推断子查询不能在聚合函数上使用,但是我无法解决该用例。

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很难做到。那么,这里正确的查询是什么?任何关于如何思考问题的指针都将受到赞赏!

1 个答案:

答案 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
相关问题