【发布时间】:2023-01-09 02:39:32
【问题描述】:
我在 MySQL 数据库中有一个表 (table1),其数据与此类似:
| Category | total_sold | revenue | profit |
|---|---|---|---|
| fruit | 32 | 200 | 150 |
| veggies | 12 | 50 | 23 |
| chips | 23 | 170 | 110 |
| fruit | 43 | 300 | 180 |
| chips | 5 | 25 | 15 |
使用 sqlalchemy 通过 python 脚本定期将新数据插入表中(使用 Pandas 将 csv 文件附加到 mysql 表)。
我想使用查询创建一个基于类别的聚合表 (table2),并且我希望在向 table1 添加新记录时更新聚合。
例如在执行查询之后:
CREATE TABLE table2 AS
SELECT Category, AVG(total_sold) avg_sold, AVG(revenue) avg_revenue, AVG(profit) avg_profit
FROM table1
GROUP BY 1
我得到 table2 作为:
| Category | avg_sold | avg_revenue | avg_profit |
|---|---|---|---|
| fruit | 37.5 | 250 | 165 |
| veggies | 12 | 50 | 23 |
| chips | 14 | 97.5 | 62.5 |
现在如果我向table1插入几条新记录,我怎样才能让table2自动更新呢? (根据所有 table1 记录重新计算所有聚合,包括新添加的记录)
我阅读了有关创建触发器的信息,但我不确定如何执行它或者它是否适用于这种情况。
我将不胜感激任何帮助。
【问题讨论】:
-
您应该创建一个视图,而不是创建一个表。然后您可以从该视图中进行选择并始终获得最新的结果。
-
@forpas 我对视图不熟悉,但我会在线查看并尝试。感谢您的回答!
-
这回答了你的问题了吗? How do I create a view in MySQL?
标签: mysql sql sqlalchemy innodb mysql-python