微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在SQL中将查询结果添加到表中?

如何解决如何在SQL中将查询结果添加到表中?

我正在尝试将查询结果添加到现有表中,具体取决于现有列的值。例如,使用下表

商店 销售 工作日
10 11000 工作日
11 5000 工作日
12 8000 工作日
10 19000 周末
11 20000 周末
12 5000 周末

我想要每个商店和工作日的平均值,我可以使用以下方法获得:

SELECT AVG(Sales) AS weekday_avg,store
FROM store_sales
WHERE Weekday = 'Weekday'
GROUP BY store;

然后我想将这些结果添加到同一个表中并存储在名为“weekday_avg”的列中。

我尝试了以下操作,虽然没有出现错误,但该列没有添加任何值:

ALTER TABLE store_sales ADD COLUMN weekday_avg numeric;
UPDATE store_sales SET weekday_avg = (
    SELECT AVG(Sales) AS weekday_avg
    FROM store_sales
    WHERE Weekday = 'Weekday'
    GROUP BY store
);

我知道这可能不是最佳数据库实践,但我正在使用所提供的内容,我所需要的只是最终得到一个表,其中包含每个商店/工作日类型的平均值,我可以将其导出到 R以供进一步分析。

非常感谢!

解决方法

不要存储值。它们很容易即时计算:

select ss.*,avg(sales) over (partition by store,weekday) as weekday_avg_sales
from store_sales ss;

也许如果您有一个非常大的表,您可能想要存储汇总值。但即便如此,我还是建议为汇总和联接使用第二个表。使用索引,效率会更高。

请注意,动态计算数据意味着在更新现有数据或插入新数据时,数据始终是最新的。

,

如其他答案所述,不要将计算值存储在表中。

但如果您想知道如何完成,那么其中一种选择是使用相关查询,如下所示:

.ipa

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。