添加平均列到同一个表
问题描述:
我有这样一个表: 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
请指导我。 ..
答
您需要返回联接字段在子查询或连接将无法工作
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
答
没有看到任何问题与您发布的代码,除了JOIN ON
条件即应
ON a.vendor = b.vendor
AND a.part_nr=b.part_nr // OR condition can as well be based on requirement
而且因为它是一个计算值,在加单独的列到你的表是没有意义的,而有列在您的显示结果同时从表
答
您的查询是在正确的轨道上。你只需要修复了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
。 - 我建议您使用表名称的缩写表别名。