使用SQL从另一个表计算总和
我有一个表District,表中有Id列-District name。另一个表传递有列quantity-district Id。我可以使用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
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