sqlite SQL-对所有与id匹配的事务取平均值

k4ymrczo  于 12个月前  发布在  SQLite
关注(0)|答案(1)|浏览(144)

我正在使用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

| 公司id|平均价格|
| --|--|
| 1. |NULL|
| 2. |NULL|

TABLE_B

| 公司id|日期|价格|
| --|--|--|
| 1. |23年1月1日|10元|
| 1. |23年1月4日|十二块|
| 2. |23年1月4日|十四块|
| 2. |1/10/23| 2元|
| 3. |23年1月5日|十五元|
| 1. |23年1月4日|八元|
| 3. |1/20/23|三十元|
表A的预期结果|公司id|平均价格||--|--||1.第一阶段|10元||第二,|八元||第三,|二十二块五|

7rtdyuoh

7rtdyuoh1#

该查询更新表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";

相关问题