PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL tworzy nową kolumnę z wartościami uwarunkowanymi innymi kolumnami

Jednorazową operację można wykonać za pomocą zwykłej UPDATE :

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

Radziłbym nie używać w swoich imionach wielbłąda, spacji i nawiasów. Chociaż dozwolone między podwójnymi cudzysłowami, często prowadzi do komplikacji i zamieszania. Rozważ rozdział o identyfikatorach i kluczach słowa w instrukcji .

Czy wiesz, że możesz wyeksportować wyniki zapytania? jako CSV z COPY ?
Przykład:

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

Na początku niepotrzebna kolumna nie byłaby potrzebna.

Dodatkowa odpowiedź na komentarz

Aby uniknąć pustych aktualizacji:

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

Osobiście dodałbym takie nadmiarowe kolumny tylko wtedy, gdybym miał przekonujący powód. Normalnie bym nie. Jeśli chodzi o wydajność:czy wiesz o indeksach wyrażeń i indeksach częściowych ?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - Obliczanie sum na podstawie wyniku sumy innej kolumny

  2. Wybór odpowiedniego indeksu dla zapytania PostgreSQL

  3. PostgreSQL i nodejs/pg, zwróć zagnieżdżony JSON

  4. Jak włączyć TimescaleDB w istniejącej bazie danych PostgreSQL

  5. Pobieraj agregaty dla dowolnych przedziałów czasu