Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
使用SQL从另一个表计算总和_Sql - Fatal编程技术网

使用SQL从另一个表计算总和

使用SQL从另一个表计算总和,sql,Sql,我有一个表District,表中有Id列-District name。另一个表传递有列quantity-district Id。我可以使用sql生成一个列中包含每个地区名称、其他列中包含数量总和的表吗?我知道这个问题将被关闭,因为这个站点不是关于做作业的 试试下面的代码 SELECT dis.district_name,SUM(del.quantity) as quantity FROM district as dis INNER JOIN delivery as del ON dis.id

我有一个表District,表中有Id列-District name。另一个表传递有列quantity-district Id。我可以使用sql生成一个列中包含每个地区名称、其他列中包含数量总和的表吗?

我知道这个问题将被关闭,因为这个站点不是关于做作业的

试试下面的代码

SELECT dis.district_name,SUM(del.quantity) as quantity
FROM district as dis 
INNER JOIN delivery as del 
ON dis.id = del.district_id
GROUP BY del.district_id
您可以使用以下代码:

SELECT ID, Name, SUM(Quantity) AS SumOfQuantity      
FROM  
(  
   SELECT District.ID, District.Name, Delivery.Quantity  
   FROM District, Delivery  
   WHERE District.Id = Delivery.DistrictID  
) AS T1  
GROUP BY ID, Name

你试过什么吗?你需要一个GROUP BYin ansi sql你不能使用没有聚合函数的列而不是GROUP by SIMPLE-你不能按id分组并选择名称,这将在非ansi兼容的mysql中工作,它实际上使用min作为默认聚合为什么你需要在这里使用子查询?如果您是按两列进行分组的,那么有1个查询就足够了。您还应该使用内部联接,而不是将联接条件放在where中clause@Used_By_Already大多数关系数据库管理系统都理解这种情况,并将在何处使用连接或交叉连接+过滤器处理这两个查询equally@user3904057不完全是我的意思。本网站要求我们尽可能使用基于标准的代码,在where子句中放置连接条件,而不是最新的ANSI SQL标准。如果您使用内部连接等,这将是一个更好的答案。
SELECT ID, Name, SUM(Quantity) AS SumOfQuantity      
FROM  
(  
   SELECT District.ID, District.Name, Delivery.Quantity  
   FROM District, Delivery  
   WHERE District.Id = Delivery.DistrictID  
) AS T1  
GROUP BY ID, Name