【问题标题】:use average of a colomn in another table使用另一个表中列的平均值
【发布时间】:2013-07-11 14:33:12
【问题描述】:

我有两张桌子:

CARMAKES
id, name, avg_sold_for

SALES
carmake_id, price

我想要做的是使用单个 SQL 语句来执行以下操作: 对于 CARMAKES 中的所有行,avg_sold_for 字段应显示 SALES 中所有价格字段的平均值,其中 carmake_id 与 CARMAKES 中的给定 id 匹配。

例子如下:

CARMAKES
id, name, avg_sold_for
0, "Toyota", 0
1, "Nissan", 0

SALES
carmake_id, price
0, 10
1, 20
0, 30
0, 20

我想将 CARMAKES 表更新为

CARMAKES
id, name, avg_sold_for
0, "Toyota", 20
1, "Nissan", 20

【问题讨论】:

    标签: mysql group-by sql-update average


    【解决方案1】:

    试试这个:

    UPDATE CARMAKES
    SET avg_sold_for = (SELECT SUM(price) / COUNT(carmake_id) 
                        FROM SALES WHERE CARMAKES.id = SALES.carmake_id)
    

    UPDATE CARMAKES C 
    INNER JOIN (SELECT carmake_id, (SUM(price) / COUNT(carmake_id)) avg_sold_for
                FROM SALES GROUP BY carmake_id) A ON C.id = A.carmake_id
    SET C.avg_sold_for = A.avg_sold_for 
    

    【讨论】:

    • 谢谢,我使用了你的第一个建议,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多