#postgresql
#postgresql
Вопрос:
Я пытаюсь вычесть два столбца в 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 запросом для всех строк.
Комментарии:
1. Отредактируйте свой вопрос и объясните, какие вычисления вы пытаетесь выполнить.
2. Это потому, что вы используете текстовый тип вместо целого числа для своих столбцов.
3. Почему вы сохраняете что-то, что можно легко вычислить в запросе, когда это необходимо? Это пустая трата места для хранения в БД и может привести к расхождениям в данных. Что происходит, когда вы выполняете исходную вставку, сохраняете
active_cases
, а затем кто-то редактируетnew_infections
или один из других столбцов?active_cases
Теперь вы ошибаетесь.4. @Abelisto: Хороший улов! Я пропустил выравнивание столбцов по левому краю.
5. Вау, хорошо @Abelisto спасибо, это было глупо…
Ответ №1:
На самом деле это было потому, что мои столбцы были varchar
вместо integer
.