【发布时间】:2021-02-18 19:12:19
【问题描述】:
我试图在 Postgres 中减去两列并将结果保存在第三列中,但我无法真正让它工作。我使用 MacOS Postgres13.0。
我的数据库如下所示:
id | date | new_infections | new_deaths | new_recovered | active_cases
-----+------------+----------------+------------+---------------+--------------
16 | 2020/03/21 | 111 | 0 | 12 |
17 | 2020/03/23 | 213 | 3 | 0 |
18 | 2020/03/24 | 25 | 1 | 0 |
我先尝试了一些基本的东西,比如:
SELECT *, new_infections - new_deaths AS active_cases FROM covid_stats_poland;
我也试过了:
UPDATE covid_stats_poland
SET active_cases = new_infections - new_deaths - new_recovered;
但我收到“提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。”每时每刻。谁能给点建议?
我正在尝试进行以下计算:
new_infections - new_deaths - new_recovered
并通过查询所有行将其保存为 active_cases。
【问题讨论】:
-
编辑您的问题并解释您要进行的计算。
-
这是因为您的列使用的是文本类型而不是整数。
-
为什么在需要时保存可以在查询中轻松计算的东西?这会浪费数据库中的存储空间,并可能导致数据不一致。当您执行原始插入、存储
active_cases,然后有人编辑new_infections或其他列之一时会发生什么?你的active_cases现在错了。 -
@Abelisto:不错的收获!我错过了左侧的列对齐方式。
-
哇,好的@Abelisto,谢谢,那太愚蠢了......
标签: postgresql