sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL maakt een nieuwe kolom met waarden die afhankelijk zijn van andere kolommen

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 ?



  1. Tellen records geretourneerd MySQL-doctrine

  2. TUPLES gebruiken om meer dan 1000 vermeldingen in de SQL IN-clausule te plaatsen

  3. SQLAlchemy+pymysql-fout:sqlalchemy.util.queue.Empty

  4. Oracle - unieke Listagg-waarden