PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL crée une nouvelle colonne avec des valeurs conditionnées sur d'autres colonnes

L'opération unique peut être réalisée avec un simple UPDATE :

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

Je conseillerais de ne pas utiliser la casse camel, l'espace blanc et les parenthèses dans vos noms. Bien qu'autorisé entre guillemets doubles, cela entraîne souvent des complications et de la confusion. Considérez le chapitre sur les identifiants et la clé mots dans le manuel .

Savez-vous que vous pouvez exporter les résultats d'une requête au format CSV avec COPY ?
Exemple :

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

Vous n'auriez pas besoin de la colonne redondante de cette façon pour commencer.

Réponse supplémentaire au commentaire

Pour éviter les mises à jour vides :

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)
...

Personnellement, je n'ajouterais de telles colonnes redondantes que si j'avais une raison impérieuse. Normalement je ne le ferais pas. S'il s'agit de performances :connaissez-vous les index sur les expressions et les index partiels ?