PostgreSQL如何添加布尔列判断是否为对应attribute的最新条目
PostgreSQL 实现同属性分组最新日期校验列方案
一次性新增并填充校验列
如果仅需要对现有数据完成计算,不需要后续自动维护该列值,按以下两步操作即可:
- 新增布尔类型的目标列
-- 将your_table_name替换为你的实际表名 ALTER TABLE your_table_name ADD COLUMN desired_col BOOLEAN DEFAULT FALSE;
- 分组计算并填充列值,逻辑等价于你给出的pandas实现:
-- 将your_table_name替换为你的实际表名 UPDATE your_table_name t SET desired_col = (t.date = group_max.max_date) FROM ( SELECT attribute, MAX(date) AS max_date FROM your_table_name GROUP BY attribute ) group_max WHERE t.attribute = group_max.attribute;
执行完成后可通过以下语句验证结果是否符合预期:
SELECT date, attribute, desired_col FROM your_table_name ORDER BY attribute, date DESC;
Trigger 适配说明
Trigger 是数据库提供的自动触发执行逻辑的能力,仅当你需要后续对表做增删改操作时,自动同步更新desired_col的值,才需要使用:
- 新增数据时,Trigger 可以自动判断新数据的日期是否为对应属性分组的最新值,更新新数据和原有最新值行的
desired_col - 修改/删除数据时,Trigger 也可以自动刷新对应分组的
desired_col取值
如果仅需要完成现有历史数据的计算,不需要后续自动维护,无需使用 Trigger。
内容的提问来源于stack exchange,提问作者Chris Dixon
相关产品推荐
相关产品推荐

