PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL erstellt eine neue Spalte mit Werten, die von anderen Spalten abhängig sind

Der einmalige Vorgang kann mit einem einfachen UPDATE erreicht werden :

UPDATE tbl
SET    one_year_survival = (survival OR survival_days >= 365);

Ich rate davon ab, Camel-Case, Leerzeichen und Klammern in Ihren Namen zu verwenden. Obwohl es zwischen doppelten Anführungszeichen erlaubt ist, führt es oft zu Komplikationen und Verwirrung. Beachten Sie das Kapitel über Bezeichner und Schlüssel Worte im Handbuch .

Wussten Sie, dass Sie die Ergebnisse einer Abfrage exportieren können? als CSV mit COPY ?
Beispiel:

COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';

Auf diese Weise würden Sie die redundante Spalte zunächst nicht benötigen.

Zusätzliche Antwort zum Kommentar

So vermeiden Sie leere Aktualisierungen:

UPDATE tbl
SET    "Dead after 1-yr" = (dead AND my_survival_col < 365)
      ,"Dead after 2-yrs" = (dead AND my_survival_col < 730)
....
WHERE  "Dead after 1-yr" IS DISTINCT FROM (dead AND my_survival_col < 365)
   OR  "Dead after 2-yrs" IS DISTINCT FROM (dead AND my_survival_col < 730)
...

Ich persönlich würde solche überflüssigen Spalten nur hinzufügen, wenn ich einen zwingenden Grund hätte. Normalerweise würde ich das nicht. Wenn es um Leistung geht:Kennen Sie Indizes für Ausdrücke und Teilindizes ?