Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:子查询和聚合函数(总和)_Sql_Postgresql - Fatal编程技术网

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