De eenmalige bewerking kan worden bereikt met een eenvoudige UPDATE
:
UPDATE tbl
SET one_year_survival = (survival OR survival_days >= 365);
Ik zou adviseren om geen camel-case, witruimte en haakjes in uw namen te gebruiken. Hoewel toegestaan tussen dubbele aanhalingstekens, leidt dit vaak tot complicaties en verwarring. Overweeg het hoofdstuk over identifiers en sleutel woorden in de handleiding .
Weet u dat u de resultaten van een zoekopdracht kunt exporteren als CSV met COPY
?
Voorbeeld:
COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';
Je zou de overbodige kolom op deze manier niet nodig hebben om mee te beginnen.
Aanvullend antwoord op opmerking
Om lege updates te vermijden:
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)
...
Persoonlijk zou ik dergelijke overbodige kolommen alleen toevoegen als ik een dwingende reden had. Normaal zou ik dat niet doen. Als het om prestaties gaat:kent u indexen op uitdrukkingen en gedeeltelijke indexen ?