SQL-平均所有匹配id的事务

问题描述 投票:0回答:1

我正在使用 SQLite 并尝试通过 ID 查找商品的平均交易价格。我正在尝试使用表 B 中该特定公司(由 id 标识)的季度所有交易的平均价格来更新 A.avg_price。我尝试了以下查询,但它运行了一个多小时,但没有成功 -所以我想我做了一些低效的事情。我是 SQL 新手,因此非常感谢您的帮助!

UPDATE "Table_A" AS A Set "avg_price" = (SELECT AVG ("price") FROM "Table_B" AS B WHERE A."id" = B."id")

      TABLE_A
公司编号 平均价格
1.
2.
    TABLE_B
公司编号 日期 价格
1. 1/1/23 10 美元
1. 1/4/23 12 美元
2. 1/4/23 14 美元
2. 1/10/23 2 美元
3. 1/5/23 15 美元
1. 1/4/23 8 美元
3. 1/20/23 30 美元

表 A 的预期结果 |公司编号 |平均价格 | | ---------- | ---------- | | 1.| 10 美元 | | 2.| 8 美元 | | 3.| $22.5 |

sql performance sqlite sql-update average
1个回答
0
投票

查询更新表 A 中的“avg_price”列以包含每个公司的平均交易价格。它通过首先计算表 B 中每个公司的平均价格并将这些平均值存储在名为“B”的临时表中来实现此目的。然后,它使用公司 ID 将表 A 中的公司与“B”中相应的平均值进行匹配。最后,它用计算出的平均值更新表 A 中的“avg_price”,确保每个公司的平均价格正确反映在表 A 中。

UPDATE "Table_A" AS A
SET "avg_price" = B.avg_price
FROM (
    SELECT "id", AVG("price") AS avg_price
    FROM "Table_B"
    GROUP BY "id"
) AS B
WHERE A."id" = B."id";
© www.soinside.com 2019 - 2024. All rights reserved.