sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL crea una nueva columna con valores condicionados a otras columnas

La operación única se puede lograr con un simple UPDATE :

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

Aconsejaría no usar mayúsculas y minúsculas, espacios en blanco y paréntesis en sus nombres. Si bien se permite entre comillas dobles, a menudo genera complicaciones y confusión. Considere el capítulo sobre identificadores y claves palabras en el manual .

¿Sabe que puede exportar los resultados de una consulta como CSV con COPY ?
Ejemplo:

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

Para empezar, no necesitaría la columna redundante de esta manera.

Respuesta adicional al comentario

Para evitar actualizaciones vacías:

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

Personalmente, solo agregaría columnas tan redundantes si tuviera una razón convincente. Normalmente no lo haría. Si se trata de rendimiento:¿conoce los índices en expresiones e índices parciales ?