PostgreSQL:子查询和聚合函数(总和)
我试着提到其他问题;我推断子查询不能用于聚合函数,但我无法解决这个用例PostgreSQL:子查询和聚合函数(总和),sql,postgresql,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\u id, Mod
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\u id
,ModelInfo与ProductInfo一起获取价格,
将返回的价格乘以每个特定客户的采购记录中的数量,
这需要我在最后链接CustomerInfo以获取名称
我在用Postgres。我可以用Java编写一个程序,但我发现用SQL很难做到这一点。那么,这里的正确查询是什么?任何关于如何思考问题的建议都将不胜感激 为了使问题更容易回答,您确实应该构建一个模式,其中包含示例数据和基于此的预期输出。可能是使用或类似的工具,我在pgAdmin 4上使用了示例数据;我如何在这里分享它?谢谢你可以用。不要忘记编辑您的问题并添加其链接。:)
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