【问题标题】:add average column into same table将平均列添加到同一张表中
【发布时间】:2023-03-09 23:00:01
【问题描述】:
我有一张这样的桌子:
Table1
我需要在该表中添加一列作为平均交货时间
avr_del_time column added
我的代码是:
SELECT a.vendor, a.part_nr, a.delivery_time, b.avr_del_time
FROM Table1 a
INNER JOIN (SELECT AVG(delivery_time) AS avr_del_time FROM Table1 GROUP BY vendor, part_nr) b
ON a.vendor = b.vendor, a.part_nr=b.part_nr
请指导我...
【问题讨论】:
标签:
sql
database
ms-access
average
【解决方案1】:
您的查询在正确的轨道上。您只需要修复 SQL 错误:
SELECT a.vendor, a.part_nr, a.delivery_time, b.avr_del_time
FROM Table1 as a INNER JOIN
(SELECT vendor, part_nr, AVG(delivery_time) AS avr_del_time
FROM Table1
GROUP BY vendor, part_nr
) as b
ON a.vendor = b.vendor AND a.part_nr = b.part_nr;
注意事项:
- 在
GROUP BY 子查询中,您需要SELECT 中的键。
-
ON 条件中有逗号;应该是AND。
- 我建议您使用作为表名缩写的表别名。
【解决方案2】:
除了JOIN ON 条件之外,您发布的代码没有发现任何问题
ON a.vendor = b.vendor
AND a.part_nr=b.part_nr // OR condition can as well be based on requirement
此外,由于它是一个计算值,因此在从表中获取时,将单独的列添加到表中而不是在显示结果中显示该列是没有意义的
【解决方案3】:
您需要在子查询中返回连接的字段,否则连接将不起作用
SELECT a.vendor, a.part_nr, a.delivery_time, b.avr_del_time
FROM Table1 a
INNER JOIN (SELECT Vendor,
part_nr,
AVG(delivery_time) AS avr_del_time
FROM Table1
GROUP BY vendor, part_nr) b
ON a.vendor = b.vendor and a.part_nr=b.part_nr