【问题标题】: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
        

        【讨论】:

          猜你喜欢
          • 2014-08-31
          • 2015-01-13
          • 1970-01-01
          • 1970-01-01
          • 2021-12-03
          • 2016-07-28
          • 2017-07-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多