PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL membuat kolom baru dengan nilai yang dikondisikan pada kolom lain

Operasi satu kali dapat dicapai dengan UPDATE biasa :

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

Saya menyarankan untuk tidak menggunakan kotak unta, spasi dan tanda kurung dalam nama Anda. Meskipun diperbolehkan di antara tanda kutip ganda, ini sering menyebabkan komplikasi dan kebingungan. Pertimbangkan bab tentang pengidentifikasi dan kunci kata-kata dalam manual .

Tahukah Anda bahwa Anda dapat mengekspor hasil kueri sebagai CSV dengan COPY ?
Contoh:

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

Anda tidak memerlukan kolom yang berlebihan dengan cara ini untuk memulai.

Jawaban tambahan untuk komentar

Untuk menghindari pembaruan kosong:

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

Secara pribadi, saya hanya akan menambahkan kolom yang berlebihan jika saya memiliki alasan yang kuat. Biasanya saya tidak akan melakukannya. Jika ini tentang kinerja:apakah Anda mengetahui indeks pada ekspresi dan indeks parsial ?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonfigurasi Replikasi Cluster-to-Cluster untuk PostgreSQL

  2. Permintaan Postgres yang sangat lambat menggunakan WHERE pada banyak baris yang berdekatan

  3. postgresql - dapatkan hitungan berdasarkan rentang nilai

  4. Postgres dump hanya bagian dari tabel untuk snapshot dev

  5. Kesalahan Basis Data Postgres Tajuk Halaman Tidak Valid